web-dev-qa-db-ja.com

ノードpackage.jsonで、追加のパラメーターを使用して別のスクリプトからスクリプトを呼び出します。この場合、mocha watcherを追加します

ノードのpackage.jsonで、「スクリプト」にすでにあるコマンドを再利用したいと思います。

これが実際の例です

代わりに(watchスクリプトの余分な-wに注意してください):

"scripts": {
             "test" : "./node_modules/mocha/bin/mocha --compilers coffee:coffee-script/register --recursive -R list",
             "watch": "./node_modules/mocha/bin/mocha --compilers coffee:coffee-script/register --recursive -R list -w",
           }

次のようなものが欲しい

"scripts": {
             "test" : "./node_modules/mocha/bin/mocha --compilers coffee:coffee-script/register --recursive -R list",
             "watch": "npm run script test" + "-w",
           }

動作しません(jsonで文字列連結を実行できません)が、私が望むものを取得する必要があります

私はnpmスクリプトが以下をサポートしていることを知っています:-&(並列実行)-&&(順次実行)

だから多分別のオプションがありますか?

35
Dinis Cruz

これは[email protected]で実行できます。 OSと使用しているnpmのバージョンを指定しませんが、更新するために何かをしなければ、おそらく[email protected]を実行しますnotは以下の構文をサポートします。

LinuxまたはOSXでは、Sudo npm install -g npm@latestでnpmを更新できます。すべてのnpmを更新するガイドについては、 https://github.com/npm/npm/wiki/Troubleshooting#try-the-latest-stable-version-of-npm プラットフォーム。

スクリプトに追加の引数を渡すことにより、これを行うことができるはずです。

"scripts": {
  "test": "mocha --compilers coffee:coffee-script/register --recursive -R list",
  "watch": "npm run test -- -w"
}

次の簡略化されたpackage.jsonを使用してこれを検証しました。

{
  "scripts": { "a": "ls", "b": "npm run a -- -l" }
}

出力:

$ npm run a

> @ a /Users/smikes/src/github/foo
> ls

package.json
$ npm run b

> @ b /Users/smikes/src/github/foo
> npm run a -- -l


> @ a /Users/smikes/src/github/foo
> ls -l

total 8
-rw-r--r--  1 smikes  staff  55  4 Jan 05:34 package.json
$ 
52
Sam Mikes