npm

開発手法・ツール | IT用語集

この用語をシェア

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

この用語についてもっと詳しく

npmに関するご質問や、システム導入のご相談など、お気軽にお問い合わせください。