Edited at

npmのグローバルインストールとローカルインストール


グローバルインストール

こんな感じ

npm install -g bower

こちらの記事


npmのインストール場所にパッケージをインストールします。

付けない場合は,カレントディレクトリのnode_modules内にインストールされます。


グローバルインストールはそうなんですけれど、私の場合はnodebrewでnodeとnpmを入れているので、

npm list -g

/Users/teru1/.nodebrew/current/lib

ここ配下にnode_modulesがあり、ここにインストールされいる様子です。これはよくわかりました。


ローカルインストール

こちらの記事にはローカルインストールはカレントディレクトリのnode_modules内にインストールと書いてあるので、

ホームディレクトリ配下にディレクトリ作って、そこでnpm installやったんですけど、

そのディレクトリの親であるホームディレクトリのnode_modulesにインストールされました。どうしてそんなディレクトリがあるのかといいますと、前にここでnpm installとかやった時に作られたものなのでしょう。

親ディレクトリにnode_modulesディレクトリがある場合はそこにインストールされる?


試す


親にnode_modulesディレクトリが無いディレクトリにて

$ pwd

/Users/Shared

↑この階層内にはnode_modulesディレクトリはありません

↓ディレクトリ作って、移動して、install

$ mkdir sample_npm

$ cd sample_npm/
$ npm install bower

↓node_modulesが作られて、そこにインストールされた!

$ ls

total 0
drwxr-xr-x 3 teru1 wheel 102 5 27 17:01 ./
drwxrwxrwt 8 root wheel 272 5 27 17:01 ../
drwxr-xr-x 4 teru1 staff 136 5 27 17:02 node_modules/


親にnode_modulesディレクトリを作って

さっきの始まりと同じ状態にして、/Users/Sharedにnode_modulesディレクトリを作成します。

$ pwd

/Users/Shared
$ mkdir node_modules
$ ls
total 16
drwxrwxrwt 8 root wheel 272 5 28 11:45 ./
drwxr-xr-x 5 root admin 170 11 9 2013 ../
-rw-r--r--@ 1 teru1 wheel 6148 12 14 01:21 .DS_Store
-rw-r--r-- 1 root wheel 0 8 25 2013 .localized
drwxrwxrwx@ 5 teru1 wheel 170 11 10 2013 SC Info/
drwxr-xr-x 6 root wheel 204 11 17 2013 SplashtopStreamer/
drwxrwxrwx@ 2 teru1 wheel 68 11 9 2013 adi/
drwxr-xr-x 2 teru1 wheel 68 5 28 11:45 node_modules/

↓ディレクトリ作って、移動して、install

$ mkdir sample_npm

$ cd sample_npm/
$ npm install bower

↓ここにディレクトリは出来ない

$ ls

total 0
drwxr-xr-x 2 teru1 wheel 68 5 28 11:47 ./
drwxrwxrwt 9 root wheel 306 5 28 11:47 ../

mkdirで作った上の階層のnode_modulesにインストールされたようです。なるほど。

$ ls ../node_modules/

total 0
drwxr-xr-x 4 teru1 wheel 136 5 28 11:48 ./
drwxrwxrwt 9 root wheel 306 5 28 11:47 ../
drwxr-xr-x 3 teru1 wheel 102 5 28 11:48 .bin/
drwxr-xr-x 18 teru1 staff 612 5 28 11:48 bower/