4

注: これは、引数を最上位のスクリプトに送信することではなく、そのスクリプトによって呼び出されるスクリプトに送信することに関するものです

私の package.json で、コマンド ライン引数を直接受け取るスクリプトを呼び出すと、機能します。しかし、他のスクリプトを呼び出すスクリプトを呼び出すと、コマンドライン引数が渡されません。どうすればそれらを渡すことができますか?

{
    ...
    "takes-args": "somemodule",
    "calls-takes-args": "npm run takes-args"
}

以下のコマンドを実行すると、引数が取得されます。

npm run takes-args -- -env dev

しかし、他のスクリプトを実行すると、引数が取得されません。それらを引き継ぐ方法はありますか?たぶん、ドル記号のような可変マーカーで?

//The top-level script gets the args, BUT takes-args does NOT
npm run calls-takes-args -- -env dev

何か方法はありますか?

4

1 に答える 1

9

フィールドscriptsは次のようになります。

{
    ...
    "takes-args": "somemodule",
    "calls-takes-args": "npm run takes-args --"
}

--の最後にある に注意してくださいcalls-takes-args

の後に渡すもの--はすべて、実行中のスクリプトに直接追加されます。を実行するnpm run calls-takes-args -- -env devことは、 を実行することと同じですnpm run takes-args -env dev。もちろん、それはうまくいきません。

に を追加する--と、実行calls-takes-args時に が実行されます。成功!npm run calls-takes-args -- -env devnpm runnpm run takes-args -- -env dev

に引数を渡さない場合calls-takes-args、末尾--は問題ありません。


編集:

を変更できない/したくない場合はpackage.json、実行できます

npm run calls-takes-args -- -- -env dev

それが実行されますsomemodule -env dev

于 2016-11-09T14:01:17.323 に答える