質問: 似たようなワードプレスのウェブサイトを沢山運用しているのですが、 どのテンプレートのフォルダにも全く同じ構成のnode_modulesが重複して存在しており 無駄にローカルのディスク・スペースを消費しています。 毎回同じgulpfileを使っているので、gulpパッケージはグローバルにインストールして 使おうと試してみたのですが、グローバルにインストールされたパッケージはなぜか notfoundとなり、gulpが認識してくれませんでした。 requireに絶対パスを指定してみたり、いろいろ試してみたのですがダメでした。 gulpパッケージはローカルにインストールしなければいけないのでしょうか? あるいは、私の方法が間違っているのでしょうか? とりあえず、各プロジェクトのフォルダにnode_modulesのシンボリックリンクを 作って対応しようかと思っていますが、何か他によい方法があれば、ご教唆願います。 よろしくお願いします。
回答: プロジェクトによって使うモジュールのバージョンが違う際の問題を回避するため、 npm では原則として `require()` するものはローカルにインストールするようになっています。 一方 grunt や gulp のようなツールはグローバルにインストールすることが多いのですが、これもプロジェクトごとに Gruntfile や gulpfile 、あるいはそこで使われるプラグインとの互換性問題が発生しうるということで、本体もローカルにインストールする方法を選択したようです。 参考 gulpのアプローチ "なぜグローバルとローカルにインストールが必要なのか" | じまぐてっく node_modules をシンボリックリンクにしたり、 NODE_PATH を変更することで丸ごと共有することはできますが、前述のようにバージョン問題に注意が必要です。個人的には、 `npm install` せずに済んでしまうことで、package.json に書き忘れそうだなと思ったり。 思い付きですが、毎回同じ gulpfile を使うのであれば、いっそ package.json や gulpfile の置かれたディレクトリごと共有するのもありかもしれませんね。