この用語をシェア
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理解:設定ファイルの詳細把握
- セマンティックバージョニング:依存関係管理の基礎
- セキュリティ意識:脆弱性対策の継続
- スクリプト活用:開発効率化のカスタマイズ
- パッケージ選定:信頼性とメンテナンス状況の評価
