npm とは

  • Node Package Manager の略。
  • JavaScript 系のパッケージを管理するツール。
  • 必要とするパッケージをインストールする際、依存するパッケージもまとめてインストールしてくれる。
  • ライセンスは Artistic License。GPL に似ているが、改造版を再配布する際に名称変更が必要な点が異なる。
  • npm パッケージを集めたリポジトリ (npmjs.com) が運営され、40万ものパッケージが登録されている。

インストール

npm のインストール方法は Node.js のインストール を参照してください。

ヘルプ・バージョン

ヘルプを表示します。

$ npm help
$ npm --help
$ npm help コマンド
$ npm -h コマンド

npm のバージョンを表示します。

$ npm -v
$ npm --version
$ npm version

プロジェクトディレクトリを作成する

npm で管理するプロジェクトディレクトリを作成します。package.json ファイルが生成されます。

$ mkdir my-app
$ cd ./my-app
$ npm init
(略)
package name: (my-app) [Enter]
version: (1.0.0) [Enter]
description: [Enter]
entry point: (index.js) [Enter]
test command: [Enter]
git repository: [Enter]
keywords: [Enter]
author: [Enter]
license: (ISC) [Enter]
(略)
Is this ok? (yes) [Enter]
$ ls -l
-rw-rw-r--.  1 taro taro   298 Jan 18 00:05 package.json

パッケージインストール

カレントディレクトリ配下にインストールします。package.json ファイルが存在するディレクトリで実行します。

$ npm install パッケージ

install の代わりに省略形の i も指定可能です。

$ npm i パッケージ

バージョンを指定してインストールします。

$ npm install パッケージ@x.y.z

-g をつけるとグローバルインストールとなり、システムディレクトリにインストールされます。

$ npm install -g パッケージ
ローカルインストール
カレントディレクトリの node_modules 配下にインストールします。
グローバルインストール
システムディレクトリの node_modules 配下にインストールします。Node.js を yum でインストールしている場合は /usr/lib/node_modu、nodebrew でインストールしている場合は ~/nodebrew/node/バージョン/lib/node_modules 配下などにインストールされます。パッケージに依存するライブラリはローカルインストール、開発時に共通で利用するツールはグローバルインストールするケースも多い様です。

インストール後、package.json へのパッケージ情報追記を制御するには下記のオプションをつけます。

$ npm install パッケージ --no-save            // npm5~
$ npm install パッケージ --save
$ npm install パッケージ --save-optional
$ npm install パッケージ --save-dev
--no-save
package.json に書き込まない場合に指定します。npm4 までは package.json に書き込まないのがデフォルトでしたが、npm5 からは --save がデフォルトとなりました。
--save
依存パッケージの場合に指定します。package.json の dependencies に記録されます。このパッケージを誰かが npm install したときに依存パッケージとしてインストールされます。
--save-optional
依存はするけれど必須ではないパッケージの場合に指定します。package.json の optionalDependencies に記録されます。npm install でインストールされますが、インストールに失敗してもスルーされます。
--save-dev
テストツールなど、開発者が使用するパッケージの場合に指定します。package.json の devDependencies に記録されます。このパッケージを npm install しても、インストールされません。ただし、パッケージを Git から clone して npm install した場合は開発者とみなされ、インストールされます。

package.json に記述されたパッケージを再度インストールするには、package.json が存在するディレクトリで下記を実行します。

$ ls -l
-rw-rw-r--.  1 taro taro   265 Jan 18 01:41 package.json
$ npm install

ただし、インストールされるバージョンは、package.json 記載されたものではなく、最新版がインストールされます。固定のバージョンをインストールするには、npm4 までは shrinkwrap を利用していましたが、npm5 以降では package-lock.json ファイルを使用します。

$ ls -l
-rw-rw-r--.  1 taro taro 14032 Jan 18 01:41 package-lock.json
-rw-rw-r--.  1 taro taro   265 Jan 18 01:41 package.json
$ npm install

また、npm install では、インストールしたバージョンは、--save オプションをつけても package.json ファイルに反映されません。インストールしたパッケージのバージョンを package.json ファイルに反映するには後述の npm-check-updates を利用します。

パッケージ情報

インストール済のパッケージの一覧を表示する

$ npm list
$ npm ls
$ npm la
$ npm ll

グローバルインストールされたパッケージの一覧を見る

$ npm list -g

第一階層のパッケージ(直接インストールしたパッケージ)のみを表示する。

$ npm list --depth=0

パッケージアップデート

インストール済みのものより新しいものがないか確認する。

$ npm outdated
$ npm outdated -g

パッケージをアップデートします。

$ npm update パッケージ
$ npm update パッケージ -g

パッケージ名を省略すると、package.json に記述されたすべてのパッケージをアップデートします。

$ npm update

一括アップデートには、npm-check-updates を使用することもあります。

$ npm install -g npm-check-updates     // ncu をインストールする
$ ncu                                  // アップデート情報を表示する
$ ncu -u                               // アップデート情報を package.json に書き込む
$ npm install                          // 更新された package.json に従いアップデートする
$ ncu パッケージ名                        // 特定のパッケージのみを調べる
$ ncu -x パッケージ名                     // 指定したパッケージを除外する
$ ncu '/^xyz-.*$/'                     // xyz- で始まるパッケージのみを調べる

パッケージアンインストール

アンインストールする

$ npm uninstall パッケージ
$ npm uninstall パッケージ -g

アンインストールの結果を package.json に記録します。

$ npm uninstall --save
$ npm uninstall --save-optional
$ npm uninstall --save-dev

uninstall の代わりに省略系の rm でも可能

$ npm rm パッケージ

パッケージ検索

キーワードに関連するパッケージを npm リポジトリから検索します。

$ npm search パッケージ

パッケージの詳細情報を表示します。

$ npm info パッケージ
$ npm view パッケージ
$ npm show パッケージ

パッケージのバージョンを表示します。

$ npm info パッケージ version  // 最新バージョンを表示
$ npm info パッケージ versions  // インストール可能なバージョン一欄を表示

タスク実行

タスクは package.json の scripts: に記述しておきます。

{
  "scripts": {
    "clean": "rimraf dist/*",
    "build": "npm run clean && tsc",
    "lint": "tslint ./src/**/*.ts --project tsconfig.json",
    "start": "pm2 start pm2config.yaml --env production",
    "test": "jest --coverage"
  }
}

タスクを実行するには run コマンドを使用します。

$ npm run build

引数なしで実行すると、タスクの一覧を表示します。

$ npm run

よく使用されるタスクには下記のものがあります。

$ npm run build   // プロジェクトをビルドします
$ npm run watch   // ファイルの更新を監視し、更新されたら自動ビルドします
$ npm run serve   // 評価用テストサーバを起動します

さらに、複数のタスクを自動実行するには、Grunt や Gulp などのタスクランナーを使用します。

ディレクトリ

ローカル、グローバルのルートディレクトリ、コマンドディレクトリを表示します。

$ npm root
$ npm root -g
$ npm bin
$ npm bin -g



パッケージ生成

該当プロジェクトのPackage化

$ npm pack

.npmignorebにファイルやディレクトリを追加すると記載のものは外してパック化する。



ショートカット

下記のショートカットを利用することができます。

コマンドショートカット
installi
uninstallrm r remove rm un unlink
listls
searchs se
--global-g
--save-S
--save-dev-D


+ Recent posts