1.コンセプト
NPMはできますpackage.jsonの使用ファイルのスクリプトのフィールド定義されたスクリプトコマンドを。例えば:
上記内部package.jsonの断片、内部でスクリプトのスクリプト属性のそれぞれに対応するフィールドオブジェクト。スクリプトを実行することができたnpn実行を使用してください。
これらは、NPMと呼ばれるスクリプト、スクリプト内のpackage.jsonで定義されています。
NPMスクリプトの利点:
-
関連スクリプトプロジェクトが一箇所に集中させることができます。
-
異なるプロジェクトスクリプトコマンド限り、同じ機能は、あなたが同じ外部インタフェースを持つことができます。ユーザーは単に実行し、プロジェクトをテストする方法を知っている必要はありません
npm run test
し。 -
あなたは、NPM設けられた補助機能の多くを利用することができます。
いずれかのパラメーターを指定せずに、NPMのスクリプトコマンドを使用することができ、現在のすべてのプロジェクトを見るnpm run
コマンド
2.原理
NPMスクリプト原理は非常に簡単です。実行するたびにnpm run
、自動的に内部のシェルで指定されたスクリプトコマンドを実行し、新しいシェルを作成します。したがって、限り、シェル(通常はバッシュ)のように、あなたが実行できることを、あなたは内部のスクリプトNPMを書くことができます。
特別な機能があるnpm run
新しいこのシェル、現在のディレクトリnode_modules/.bin
のサブディレクトリには参加しPATH
、その後、実行後、変数をPATH
変数に戻り正常に。
これは、現在のディレクトリにあることを意味しnode_modules/.bin
、すべてのスクリプトのサブディレクトリは、あなたが直接パスを追加することなく、自分の足、本名を呼び出すことができます。例えば、モカを持っている現在のプロジェクトに応じて、ちょうど直接書き込むmocha test
ことに。
"test": "mocha test"
次のように書かれたのではなく。
"test": "./node_modules/.bin/mocha test"
唯一の要件は、それが必ずしもノードのスクリプトではありませんので、NPMスクリプトは、シェルで実行することができるということであるので、任意の実行可能ファイルは、内部に書き込むことができます。
NPMスクリプトの終了コード、およびシェルスクリプトのルールを守ります。終了コードがない場合には0
、NPMには、スクリプトの実行が失敗したと見なします。
3.通配符
NPMシェルスクリプトは、スクリプトなので、あなたは、シェルのワイルドカードを使用することができますので。
"lint": "jshint *.js" "lint": "jshint **/*.js"
上記のコード、*
任意のファイル名を表し、**
いずれかのサブディレクトリを表します。
あなたはエスケープシェルを防ぐために、ワイルドカード元のコマンドを渡したい場合は、アスタリスクをエスケープします。
"test": "tap test/\*.js"
4.パラメータの受け渡し
使用するパラメータを渡すNPMスクリプト - マーク
実行の順序
複数のタスクを実行する必要がNPMスクリプトは、あなたはそれらの実行順序をクリアする必要がある場合
平行(すなわち、同時並行実行)で実行した場合、アンパサンドを使用することができます。例えば:
それは(のみ次のタスクを実行するだけで最初に成功しているタスク)の実装に二次的である場合は、使用できる&&
シンボルを。
$ npm run script1.js && npm run script2.js
6.デフォルト
一般的には、NPMのスクリプトは、ユーザーが提供します。しかし、NPM 2スクリプトは、デフォルト値を提供します。つまり、これら2つのスクリプトを定義することなく、直接使用することができ、と言うことです。
"start": "node server.js", "install": "node-gyp rebuild"
上記のコードは、npm run start
デフォルトではnode server.js
、ルートディレクトリの下にプロジェクトが存在してserver.js
、スクリプトがnpm run install
デフォルトであるnode-gyp rebuild
、のルートディレクトリの下にプロジェクトが提供するbinding.gyp
ファイルは。