コマンドについて
・コマンド
コマンド | 説明 |
npm init | 対話形式で項目を入力してpackage.jsonを作成します。 |
npm init -y | デフォルト値でpackage.jsonを作成します。 |
npm ls | インストール済みパッケージを一覧表示します(依存パッケージも含めて表示)。 |
npm ls --depth=0 | インストール済みパッケージを一覧表示します(依存パッケージは非表示)。 |
npm ls パッケージ | インストールされたパッケージを個別に確認します。 |
npm install | package.jsonの内容に従って、パッケージをインストールします。 |
npm install パッケージ | パッケージを指定してプロジェクトにインストールする
[--save]オプション : パッケージ情報をpackage.jsonに書き込みます。 |
npm uninstall パッケージ | パッケージをプロジェクトからアンインストールする。
[--save]オプション : パッケージ情報をpackage.jsonに書き込みます。 |
npm info パッケージ versions --json | npmでリリースされている全てのバージョンを表示する。 |
npm help --help | ヘルプを表示します。 |
npm -version --version | バージョンを表示します。 |
・オプション
コマンド | 説明 |
-g |
グルーバル領域のパッケージを扱います。 |
TIPS
postinstallコマンド
npm-scriptsにはユーザーのアクションをきっかけに自動で実行してくれるコマンドがいくつか用意されており、postinstallコマンドとはnpm installコマンドの終了時に実行されるコマンドです。
1 2 3 4 5 |
{ "scripts": { "postinstall": "typings install" } } |
上記の例では、npm installを実行してモジュールのインストールが終了したタイミングで、TypeScriptの型定義ファイルのインストールコマンドを実行します。
インストールしたバージョンについて
パッケージをインストールすると、package.json にはインストールした(その時点での最新)バージョンが記載されますが、バージョン番号の前に ~(チルダ)や^(キャレット)が付きます。
~: マイナーバージョンは最新で、それ以外は固定 1.2.3 <= ~1.2.3 < 1.3.x
^: メジャーバージョンは固定で、それ以外は最新 1.2.3 <= ^1.2.3 < 2.x.y
バージョンを指定してインストールしたいときは、パッケージ名の後ろに「@バージョン」をつけます。
1 |
npm install grunt@0.3.17 |
package-lock.jsonについて
- npm5から導入されたファイルです。
- package-lock.jsonはnode_modules配下やpackage.jsonに変更があった際に自動で作成・変更されるファイルです。npm install npm update npm uninstallなど、パッケージに変更が加えられるタイミングで作成・変更されます。
- リポジトリのソースの一部として組み込まれるように設計され、様々な目的のために利用されます。
- package-lock.jsonを導入する目的は以下のとおりです。
- リポジトリの依存関係を表現する単一の方法を提供する。 チームメンバーそれぞれの環境での開発時や、CIによるデプロイ時など、環境に限らず同じ依存関係をもってサブモジュールをインストールできることを保障します。
- 対象のサブモジュールに対して、過去のバージョンに容易に戻れるような手段を提供する。
- 可読性のあるソースコードにより、モジュール改装の変更の可視化を容易にする。
- npmパッケージのインストールプロセスの最適化。すでにインストール済みのパッケージのメタデータ解析をスキップする事により、インストールプロセスの最適化を実現します。
- ファイルが公開が可能
- トップレベルモジュールにpackage-lock.jsonファイルがある場合、下位モジュールでのpackage-lock.jsonは無視される。
参考
・Node.jsのpackage.jsonのバージョン指定の"~(チルダ)"と"^(キャレット)"の違い
・package.jsonのパッケージバージョンに記載される ^ (キャレット) とは?どうしてつくのか?
・npmでパッケージの特定のバージョンをインストールする
・npm5から導入された package-lock.jsonについて