LoginSignup
81
80

More than 5 years have passed since last update.

npm のローカルモードでインストールした実行モジュールにパスを通す設定

Last updated at Posted at 2014-03-18

[2015.06.26 追記]

1年以上前に書いた情報で、情報入手元としてリンクしてあったURLが404になってしまっているようですね。
新しい情報入手元には npm Webサイトの Display npm bin folder を参考にするのがいいと思います。

以前のページには "実行モジュールインストール先のパス" が書いてありましたが、新しいリンク先では "各々の環境での実行モジュールインストール先のパスの調べ方" が書いてあります。

そんな訳で実行モジュールのインストール先は npm bin の結果をもって読み替えていただくといいと思います。

-- 追記ここまで --
 

実は Node.js はほとんど使っていないのですが、less だったり Yeoman だったりといった npm でインストールするものを使いたいときがあります。

そのとき npm install -g piyopiyo とグローバルモードでインストールする場合は、インストールするだけで不自由なく使える事が多いのですが、ローカルモードでインストールしたときは各実行モジュールのパスを手動で追加するのか、、?という点で困った & 解決したのでそのメモです。

※ このメモは OS が OSX or FreeBSD の前提です。

さいしょに結論

お使いのシェルの設定ファイルで、PATH の指定に以下のような行を追加。
私は zsh で .zshenv に PATH の設定を書いているので、${HOME}/.zshenv を編集しました。

.zshenv
if [ -d ${HOME}/node_modules/.bin ]; then
    export PATH=${PATH}:${HOME}/node_modules/.bin
fi

そして設定ファイルを再読み込み。

zsh
zsh% source ~/.zshenv

グローバルモードでインストールすると

npm は -g オプションをつけるとグローバルモードになって、/usr/local/(もしくは prefix で指定したディレクトリ)以下の環境へインストールしてくれるそうで。

  • モジュール自体は --> /usr/local/lib/node_modules/ の下へ
  • 実行モジュールは --> /usr/local/bin/ の下へ

それぞれ配置されてます。

元々、実行モジュールのインストール先 /usr/local/bin/ にパスを通してあるので、-g オプションをつけてインストールした後は何もせずともコマンドが実行できます。

ローカルモードでインストールすると

-g オプションをつけずに、npm install piyopiyo などとした場合、カレントワーキングディレクトリの下にインストールしてくれるそうで。
たとえばホームディレクトリ /home/mydir でインストールをした場合、

  • モジュール自体は --> /home/mydir/node_modules/ の下へ
  • 実行モジュールは --> /home/mydir/node_modules/.bin/ の下へ

それぞれ配置されます。

.bin/ の存在を知るまで、各 /homemydir/node_modules/*/bin/ へパスを通さないと使えないのだと思っていました。
そしてインストールした npm モジュールが複数になってきたあたりで「あれ、、、これ面倒じゃない?」という事態が起きてました。

参照するところ/気をつけること

npm のWebサイト に実行モジュールのインストール先についての説明があるのでご一読を。

そしてこの設定を有効活用するには、「ローカルモードでインストールするときはホームディレクトリでインストールする」必要があります。

諸事情で別のディレクトリへインストールするのであれば、そこの .bin へパスを通すことになると思います。
※ 今のところ予定はないけど、nodebrew でバージョン管理をしだしたりするとどうなるんだろう。。

このメモを書いたときの手元の環境

参考までに。

Mac
+ OS X 10.9.2
+ npm 1.3.24

FreeBSD
+ FreeBSD 9.1
+ npm 1.1.62 

81
80
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
81
80