jasmine-node や jshint など、グローバルにインストールする必要がある devDependencies を含む Node モジュールを構築しています。私が本質的に必要としているのは、makefile / npm スクリプト セクションでそれらのバイナリを参照して、テストやリントなどを実行できるようにすることです。つまり、プログラムで require() したくありません。
掘り下げた後、これを処理する方法についてまだ混乱しています:
1)私の最初のアプローチは、これらのモジュールがグローバルにインストールされると想定し、モジュールのドキュメントでこれを明確にし、それらのバイナリをグローバルとして参照することでした-つまり、それらがグローバルに利用可能であると期待します. これは、このアドバイスと矛盾します
グローバルにインストールされたバイナリを参照しないようにしてください。代わりに、隠し .bin ディレクトリにバイナリをインストールするローカルの node_modules を指定します。モジュール (この場合は「mocha」) が devDependencies の下の package.json にあることを確認して、npm install を実行したときにバイナリがそこに配置されるようにします。
(この投稿から取得)
前述のセットアップはかなり壊れやすいため、これは一般的に正しいように思えます。
2) 私の次のアプローチは、これらのモジュールを devDependencies に明示的に含めることでした (ただし、それらはまだ私のシステムにグローバルにインストールされています (そして、おそらくユーザーと貢献者のシステムにも))。これにより、必要なときに適切なバージョンのバイナリが確実に存在し、.NET を通じて参照できるようになりましたnode_modules/.bin/
。
しかし、私は今、このアドバイスと矛盾しています
require() する場合は、ローカルにインストールしてください。
( npm docsから取得)
それにもかかわらず、グローバルにインストールされたモジュールに対してnpm install
実際には何も取得しない(ネットワーク アクティビティを表示しない)ことに気付きました。
私の質問:
- グローバルにインストールされたモジュール (devDependencies に記載されている) のローカル バージョンは、グローバル モジュールのスナップショット (コピー) にすぎ
npm install
ませんか? - 2)これを行う正しい方法はありますか? または、私が見逃している他の練習がありますか?