Edited at

勉強メモ/npmの使い方(node.js=v0.11.16, npm=2.3.0, 2015-03時点)

2015-03時点での、npmの使い方の勉強メモ。

勉強環境:

$ node --version
v0.11.16

$ npm --version
2.3.0

参考:

パッケージインストールの考え方:


  • ローカルインストール


    • カレントディレクトリの node_modules 以下にパッケージをインストール。

    • 開発プロジェクト固有で依存するパッケージをインストールしたい時に使いやすそう。



  • グローバルインストール


    • システム共通の場所にパッケージをインストール。

    • ビルドツールなど、システム全体で利用するツール・コマンド類をインストールしたい時はこっちも便利。




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

ローカルインストールの流れ



  1. npm initpackage.json を生成しておく(オプション。開発プロジェクト固有のパッケージインストール前提になるなら、最初にやっておいたほうが良いかも)。


    • 名前, バージョン, 説明, Gitリポジトリ, キーワード, ライセンスなどひと通り聞かれる。全部デフォルトのままにして後から編集しても良い。




  2. npm install パッケージ名 でインストール。


    • デフォルトでカレントディレクトリの node_modules 以下にパッケージをインストール。


    • package.json に記録しておきたければ、npm install パッケージ名 --save を実行。


    • --save-dev / --save-optional というオプションもある。 --save との違いについては後述



ローカルインストールしたパッケージを削除



  1. npm uninstall パッケージ名



    • package.json からも依存関係削除したければ、npm uninstall パッケージ名 --save(or --save-dev or --save-optional) を実行。


    • npm rm でも一緒。



インストールしたパッケージを確認



  1. npm list (or ls or la or ll) で、デフォルトだとローカルのパッケージ確認。設定でglobalインストールしたのも確認できるっぽい(今回は試さなかった)。

グローバルインストール/グローバルアンインストール


  1. npm install -g パッケージ名

  2. npm uninstall -g パッケージ名


--save / --save-dev / --save-optional の違い



  • --savepackage.jsondependencies に追記される。


  • --save-devpackage.jsondevDependencies に追記される。


  • --save-optionalpackage.jsonoptionalDependencies に追記される。

それぞれの違いだが、package.jsonがモジュールとして外部に公開し、他の人がnpm installした時に影響する。

他の人が npm install した時に、dependencies に指定したパッケージが全てインストールされる。

devDependencies に追記したものは開発時にのみ使うパッケージを指定するのに使う。そのパッケージの利用者にとっては不要で、開発者のみが使うため、利用者が npm install パッケージ名 するときはこの依存パッケージはインストールされない。もし devDependencies もインストールしたい場合は、--dev 設定を有効化(これはnpm installのオプションではなく、 npm help 7 config にあるようにnpmの設定である)して、npm install パッケージ名 --dev とする。

ただし、利用者がpackage.json含めたソースコード全体をgitなどからcloneして開発する = 開発者と同等の立場として、追加パラメータ無しで package.json のあるディレクトリで npm install とだけした場合は、開発者の立場になるわけなので、devDependencies もインストールされる。というか、依存関係は全てインストールされるらしい。 --production つければ、package.jsonのところで npm install --production なら devDependencies はインストールされない。

dependenciesdevDependencies の使い分けだが、パッケージやプロジェクトが実行時に必要となるのを dependencies に設定し、ビルド時だけしか使われないようなビルドツール・ライブラリなどは devDependencies に入れておくと良さそう。

optionalDependenciies に追記したものは、通常のnpm installでインストールされるが、インストールに失敗してもスルーされる。正直、使いドコロがよくわからない。

他にもdependencyの種類には何種類かあるため、package.jsonのドキュメントを参照のこと。

参考:


各種ファイルのパスについて

# 基本的な説明は `npm-folders(5)` 参照

$ npm help 5 folders

# ローカルインストール先のディレクトリ確認
$ npm root

# ローカルインストール先の、コマンドディレクトリ(bin)確認
$ npm bin

# グローバルインストール先のディレクトリ確認
$ npm -g root

# グローバルインストール先の、コマンドディレクトリ(bin)確認
$ npm -g bin


ソースコードを取得した後、package.jsonから依存関係をインストールしたい

$ ls

... package.json ...

$ npm install

dependencies, devDependenciesが両方インストールされる。devDependenciesを除外したい場合は npm install --production とする。