パッケージがnpm install
を介してインストールされたときに、コマンドラインを介して自動的にインストールおよび実行できるようにする「グローバル」な依存関係(jshint、cssslint、busterなど)がいくつかあります。これは可能ですか?
現在、私は次のことを手動で行っています。
npm install -g <package_name>
npm link <package_name>
更新:ちょうど この機能のリクエスト npmに出会いました。 package.json内のscripts
configを使用する方法があるようです。
再度更新:または、 npm docs を読んだ後、おそらく 。gypファイル ?を使用することになります。よくわかりません。
package.json
から依存関係を「グローバル」として指定することはできません。そして、これはIsaac その機能要求の状態 参照したように設計によるものです:
ええ、私たちはこれをするつもりはありません。
ただし、パッケージがローカルにインストールされている場合でも「バイナリ」を使用できます。それらは.../node_modules/.bin/
にあります。そして、 preinstall
script でそれらをキューに入れることができるはずです。
ただし、一連のコマンドがかなり長い場合(「jshint、cssslint、busterなど。」が示唆するように)、確認することをお勧めします。 grunt
などのビルドツールを使用して、さまざまなタスクを実行します。
{
// ...,
"scripts": {
"preinstall": "grunt"
}
}
ローカルの依存関係をインストールし、PATHを./node_modules/.bin
に設定するbashスクリプトを使用するパターンが本当に好きです。
ファイル:env.sh
# Add your local node_modules bin to the path for this command
export PATH="./node_modules/.bin:$PATH"
# execute the rest of the command
exec "$@"
次に、bashコマンドの前にこのスクリプトを使用できます。 Makefileまたはnpmスクリプトと組み合わせた場合:
ファイル:Makefile
lint :
./env.sh csslint my_styles
ファイル:package.json
"scripts": {
"lint": "./env.sh csslint my_styles"
}
これらのファイル内のこのタスクは、グローバルな場所でcsslintを参照しているように見えますが、実際にはnode_modules binのバージョンを使用します。
これの本当にすばらしい利点は、他のノードモジュールと同様に、これらの依存関係を簡単にバージョン管理できることです。グローバルインストールソリューションに固執すると、他のプロジェクトの1つに必要な特定のバージョンをユーザーのシステムに上書きする可能性があります。
これを試してください: https://github.com/lastboy/package-script
Package.jsonからグローバルnpmパッケージを直接インストールするために使用しています。技術的な知識がないクライアントに適しています。
パッケージが既にインストールされているかどうか、インストールされていない場合もチェックします!