Room 3100

npm:globalとlocal

概要

node.jsのパッケージ管理ツールであるnpmpackage.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ページはインストールされない

使い分け

基本的には以下の方針に従えば良さそうです。

  1. 今のプロジェクトで使いたいだけならrequire('whatever')して、localにインストールする。
  2. シェルやコマンドプロンプトなどから使いたい場合は-gオプションをつけてglobalにインストールする。

CoffeescriptやExpressなど

こうしたパッケージはライブラリでもありますが、コマンドラインインターフェースも備えています。 こうした場合、2つの方法があるそうです。(前者がオススメされています。)

  1. globalとlocal両方にインストールする。実質これで動くし、ディスクスペースを多少浪費するくらい。
  2. globalにインストールしたあとでnpm link expressなどとする。これでglobal側だけ更新していくようにすれば他のシンボリックリンクにも反映される。(Windowsではcygwinなどを使わない限り、この方法は取れない)

その他

上記記事では子フォルダでさらにnpm installする例も紹介されていますが、管理上面倒なことになりますし、あまり気にする必要はないでしょう。

また、localにインストールしてもPATHを通せばコマンドラインインターフェースも使用できるので、globalインストールを全く使わないという選択肢もありです。

© 2015 3100 - All code snippets on this site is licensed under a Creative Commons Attribution 3.0 Unported License.