Skip to content

npmパッケージマネージャー入門

npm入門

npmはNode.jsの標準パッケージマネージャーです。

2022年9月時点で、npmレジストリには210万を超えるパッケージが登録されており、地球上で最大の単一言語コードリポジトリとなっています。ほとんど何でも(ほぼ!)パッケージが存在すると言っても過言ではありません。

当初はNode.jsパッケージの依存関係のダウンロードと管理方法として始まりましたが、その後、フロントエンドJavaScriptでも使用されるツールとなっています。

TIP

Yarnpnpmはnpm cliの代替手段です。こちらも検討してみてください。

パッケージ

全ての依存関係のインストール

package.jsonファイルにリストされているすべての依存関係をインストールするには、以下を実行します。

bash
npm install

これにより、プロジェクトに必要なものがすべてnode_modulesフォルダにインストールされます。フォルダが存在しない場合は作成されます。

単一パッケージのインストール

単一パッケージをインストールするには、以下を実行します。

bash
npm install <package-name>

さらに、npm 5以降、このコマンドは<package-name>package.jsonファイルの依存関係に追加します。バージョン5以前は、--saveフラグを追加する必要がありました。

このコマンドには、多くの場合、さらにフラグが追加されます。

  • --save-dev(または-D)は、パッケージをpackage.jsonファイルのdevDependenciesセクションに追加します。
  • --no-saveは、パッケージをpackage.jsonファイルに保存することを防ぎます。
  • --no-optionalは、オプションの依存関係のインストールを防ぎます。
  • --save-optionalは、パッケージをpackage.jsonファイルのoptionalDependenciesセクションに追加します。

フラグの省略形も使用できます。

  • -S: --save
  • -D: --save-dev
  • -O: --save-optional

devDependenciesdependenciesの違いは、前者にはテストライブラリなどの開発ツールが含まれ、後者は本番環境でアプリケーションにバンドルされることです。

optionalDependenciesについては、依存関係のビルド失敗がインストール失敗の原因にはなりません。ただし、依存関係の欠如を処理するのはプログラムの責任です。詳しくはオプションの依存関係をご覧ください。

パッケージの更新

更新も簡単に行えます。

bash
npm update

を実行します。これにより、すべての依存関係が最新バージョンに更新されます。

特定のパッケージのみを更新することもできます。

bash
npm update <package-name>

パッケージの削除

パッケージを削除するには、以下を実行します。

bash
npm uninstall <package-name>

バージョン管理

npmは、単純なダウンロードに加えて、バージョン管理も行います。そのため、パッケージの特定のバージョンを指定したり、必要なバージョンよりも高いバージョンまたは低いバージョンを要求したりすることができます。

多くの場合、ライブラリは別のライブラリのメジャーリリースのみに互換性があることがわかります。

または、最新のリリースのバグが修正されておらず、問題を引き起こしている場合があります。

ライブラリの明示的なバージョンを指定することで、全員がパッケージのまったく同じバージョンを使用できるようになり、package.jsonファイルが更新されるまで、チーム全体が同じバージョンを実行できます。

これらの場合、バージョン管理は非常に役立ちます。npmセマンティックバージョニング(semver)標準に準拠しています。

特定のバージョンのパッケージをインストールするには、以下を実行します。

bash
npm install <package-name>@<version>

最新バージョンをインストールするには、以下を実行します。

bash
npm install <package-name>@latest

タスクの実行

package.jsonファイルは、コマンドラインタスクを指定するためのフォーマットをサポートしており、以下を使用して実行できます。

bash
npm run <task-name>

たとえば、以下の内容のpackage.jsonファイルがあるとします。

json
{
  "scripts": {
    "start": "node index.js",
    "test": "jest"
  }
}

Webpackを実行するために、この機能を使用することが非常に一般的です。

json
{
  "scripts": {
    "watch": "webpack --watch --progress --colors --config webpack.conf.js",
    "dev": "webpack --progress --colors --config webpack.conf.js",
    "prod": "NODE_ENV=production webpack -p --config webpack.conf.js"
  }
}

そのため、忘れやすい、またはタイプミスしやすい長いコマンドを入力する代わりに、以下を実行できます。

bash
npm run watch
npm run dev
npm run prod