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

  • 31
    いいね
  • 0
    コメント

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 とする。