この用語をシェア
npmとは
npm(Node Package Manager)は、Node.jsのデフォルトパッケージマネージャーです。JavaScriptライブラリやツールのインストール、管理、公開を効率的に行い、世界最大のソフトウェアレジストリとして100万を超えるパッケージを提供しています。
npmの主要機能
パッケージ管理
- インストール:必要なライブラリの自動インストール
- 依存関係解決:パッケージ間の依存関係を自動管理
- バージョン管理:セマンティックバージョニング対応
- 更新管理:パッケージの更新とセキュリティ対応
プロジェクト管理
- package.json:プロジェクトの設定と依存関係定義
- スクリプト実行:カスタムコマンドの定義・実行
- 環境分離:development/productionの依存関係分離
- ワークスペース:モノレポ構成のサポート
package.jsonファイル
package.jsonの例:
{ "name": "my-web-app", "version": "1.0.0", "description": "Modern web application", "main": "index.js", "scripts": { "start": "node index.js", "dev": "nodemon index.js", "build": "webpack --mode production", "test": "jest" }, "dependencies": { "express": "^4.18.2", "react": "^18.2.0", "lodash": "^4.17.21" }, "devDependencies": { "webpack": "^5.75.0", "jest": "^29.3.1", "nodemon": "^2.0.20" }, "keywords": ["web", "express", "react"], "author": "Shinichi Noguchi", "license": "MIT" }
主要なnpmコマンド
基本コマンド
npm init
- 新しいプロジェクトの初期化npm install
- package.jsonの依存関係をインストールnpm install <package>
- 特定のパッケージをインストールnpm uninstall <package>
- パッケージをアンインストールnpm update
- インストール済みパッケージを更新
実行・管理コマンド
npm run <script>
- package.jsonのスクリプトを実行npm start
- アプリケーションの開始npm test
- テストの実行npm list
- インストール済みパッケージの一覧npm outdated
- 古いパッケージの確認
依存関係の種類
dependencies(本番依存関係)
アプリケーションの実行に必要なパッケージ
- Express:Webサーバーフレームワーク
- React:ユーザーインターフェース構築
- Lodash:ユーティリティライブラリ
devDependencies(開発依存関係)
開発・ビルド時のみ必要なパッケージ
- Webpack:モジュールバンドラー
- Jest:テストフレームワーク
- ESLint:コード品質チェック
npmスクリプト
よく使用されるスクリプト:
"start": "node server.js"
- 本番サーバー起動"dev": "nodemon app.js"
- 開発サーバー起動"build": "webpack --mode production"
- 本番ビルド"test": "jest --coverage"
- テスト実行"lint": "eslint src/"
- コード品質チェック
セマンティックバージョニング
バージョン記法
^1.2.3
:マイナー・パッチ更新を許可(1.x.x)~1.2.3
:パッチ更新のみ許可(1.2.x)1.2.3
:固定バージョン*
:最新バージョン(推奨しない)
npmレジストリ
公開パッケージ
- React:週間ダウンロード数2000万+
- Express:Node.js最人気Webフレームワーク
- Lodash:最も使用されるユーティリティライブラリ
- Axios:HTTP クライアントライブラリ
プライベートパッケージ
- 企業内パッケージ:npm Pro/Teams プラン
- スコープ付きパッケージ:@company/package-name
- セキュリティ:アクセス制御と監査機能
セキュリティとベストプラクティス
セキュリティ機能
npm audit
:脆弱性スキャンnpm audit fix
:自動修正の実行- package-lock.json:依存関係のロック
- 2FA(二要素認証):アカウントセキュリティ
ベストプラクティス
- package-lock.jsonの管理:バージョンロックファイルの保存
- 定期的な更新:セキュリティパッチの適用
- 不要パッケージの削除:攻撃面の縮小
- 信頼できるパッケージの選択:メンテナンス状況の確認
メリット
- 豊富なエコシステム:100万以上のパッケージ
- 効率的な開発:車輪の再発明を避ける
- 自動依存関係管理:複雑な依存関係を自動解決
- 標準化:Node.jsのデファクトスタンダード
- コミュニティ:活発な開発者コミュニティ
関連技術との比較
- Yarn:高速化・ワークスペース機能重視
- pnpm:ディスク容量の効率化
- Bower:フロントエンド専用(非推奨)
学習・活用のポイント
- package.json理解:設定ファイルの詳細把握
- セマンティックバージョニング:依存関係管理の基礎
- セキュリティ意識:脆弱性対策の継続
- スクリプト活用:開発効率化のカスタマイズ
- パッケージ選定:信頼性とメンテナンス状況の評価