概要
node.jsのパッケージ管理ツールであるnpm。
package.jsonなどと併用すると非常に便利ですが
-gオプションの使い分けが気になりました。
資料
node.jsの公式サイトに、npm 1.0が登場した時の記事があります。
npm 1.0: Global vs Local installation
基本機能
知っている人には今更かもしれませんが、おさらいです。
global
- パッケージは
{prefix}/lib/node_modulesに置かれる - 実行ファイルは
{prefix}/binに配置される - manページがある場合は
{prefix}/share/manに置かれる {prefix}は/usr/localなど。
local
- パッケージは現在のディレクトリ下、
./node_modulesに置かれる - 実行ファイルは
./node_modules/binに配置される - manページはインストールされない
使い分け
基本的には以下の方針に従えば良さそうです。
- 今のプロジェクトで使いたいだけなら
require('whatever')して、localにインストールする。 - シェルやコマンドプロンプトなどから使いたい場合は
-gオプションをつけてglobalにインストールする。
CoffeescriptやExpressなど
こうしたパッケージはライブラリでもありますが、コマンドラインインターフェースも備えています。 こうした場合、2つの方法があるそうです。(前者がオススメされています。)
- globalとlocal両方にインストールする。実質これで動くし、ディスクスペースを多少浪費するくらい。
- globalにインストールしたあとで
npm link expressなどとする。これでglobal側だけ更新していくようにすれば他のシンボリックリンクにも反映される。(Windowsではcygwinなどを使わない限り、この方法は取れない)
その他
上記記事では子フォルダでさらにnpm installする例も紹介されていますが、管理上面倒なことになりますし、あまり気にする必要はないでしょう。
また、localにインストールしてもPATHを通せばコマンドラインインターフェースも使用できるので、globalインストールを全く使わないという選択肢もありです。