web-dev-qa-db-ja.com

コマンドラインを渡す-Yarnの子スクリプトへの引数

次のようなpackage.jsonがあります。

_"scripts": {
    "dev": "cross-env BABEL_ENV=client webpack --config webpack/client.development.js && yarn dev:stub-server | cross-env BABEL_ENV=server babel-node src/server/server.js",
    "dev:stub-server": "./node_modules/.bin/robohydra ./stubs/robohydra-config.json -p 3100"
}
_

コマンドライン引数に応じて_dev:stub-server_の構成方法を変更するために、コードにいくつかのロジックを追加しました。だから、私は次を実行するたびに、私が期待するものを得る:

_yarn dev:stub-server --results=4
$ ./node_modules/.bin/robohydra ./stubs/robohydra-config.json -p 3100 -- --results=4
_

ご覧のとおり、オプションは基になるスクリプトに転送され、すべてが期待どおりに機能します。

私の問題は、_--results_を_yarn dev_コマンドから_dev:stub-server_に正しい位置に伝搬できないことです。親スクリプトは_dev:stub-server_を実行しますが、引数は次のように最後に基礎となるスクリプトに転送されます。

_yarn dev --results=2
$ cross-env BABEL_ENV=client webpack --config webpack/client.development.js && yarn dev:stub-server | cross-env BABEL_ENV=server babel-node src/server/server.js --results=2
_

代わりに上記の作業を次のようにする方法はありますか?

_yarn dev --results=2
$ cross-env BABEL_ENV=client webpack --config webpack/client.development.js && yarn dev:stub-server --results=2 | cross-env BABEL_ENV=server babel-node src/server/server.js
_

前もって感謝します!

7
Luciano M. L.

Yarnのrun は、コマンドチェーンの末尾へのargsの追加のみをサポートします。少なくとも2018年6月14日の時点では、方法はありません。それをオーバーライドします。

過去にこれが必要になったとき、自分でdev.js私によって呼び出されたスクリプトpackage.json、および環境変数を取り出した引数。

6
mrm

Macでは次を使用しています:

"scripts": {
  "benchmark": "sh -c 'ng run ${0}:benchmark'",
}

次に、yarn benchmark editorここで、editorは私のパラメーターです。

5
Philippe

別の方法として、スクリプトで*.envファイルとcatファイルを使用できます。

"run":"docker build -t --build-arg VAR=`cat vars.env` -f Dockerfile .

例えば

0
Daniel Einars