だと/usr/local/lib/node_modules/以下にインストールされて
-gオプションを付けない場合
sudo npm install express
カレントディレクトリ以下にインストールされるのですが、
インストール先を変更する方法を教えてください。
またインストール先を変更した先の指定したpathでプログラムを動かす方法はありますでしょうか。
初心者質問ですがよろしくお願い致します。
まず、-gオプションを付けない場合はsudo無しで↓のようにした方が良いと思います。
npm install モジュール名
ぶっちゃけ、アプリケーション毎に ./node_modules があって、アプリ毎に依存するパッケージやバージョンが違ってよいし、この形はほかアプリと依存ライブラリのバージョン違いによる問題を避けられることもあり、一般的だと思います。
各アプリ毎に色んな依存パッケージをinstallするのが面倒だという場合はアプリのディレクトリに以下のような内容のpackage.jsonを作っておけば、アプリディレクトリ内でnpm installを実行するだけで依存パッケージが一発でインストールできます。
{ "name": "myapp" , "version": "1.0.0" , "dependencies": { "express": "*" , "jade": "*" } }
バージョンは"*"や""にしておくと最新になりますが、勿論バージョン指定もできます。
この作法に則って書いておけば、後で自分が作ったアプリを公開する場合に、他の人も依存パッケージを1個ずつ探す必要なく一発で利用できる為便利です。
ちなみにnpmはパッケージインストールの際、以下の様な順番でインストール場所を決めます。
※昔は ~/.npmrc でrootを指定しておくとパッケージのインストール場所を指定できたのですが最近のnpmでは仕様変更でこの設定が使えなくなってるようです。以下のコマンドを実行するとnpmの設定項目とデフォルト値の一覧が見れますがrootという設定自体が今はありません。
npm config ls -l
あとは、複数アプリでモジュールを共用したい場合は以下のようなディレクトリ構造を作っておくやりかたもアリかもしれません。
workspace ├node_modules ├app1 └app2
3. npmのインストール先を指定しておく方法
http://d.hatena.ne.jp/t_43z/20101013/1286957802
を参考にしてください。