2016-11-08 21 views
1

注:私は直接コマンドライン引数を取るスクリプトを呼び出すときには、トップレベルのスクリプトに、私の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 

どうすればよいですか?

+0

@adeneoこれは複製ではありません。これは、argsをトップレベルのスクリプトにのみ渡すためのものです。 –

+0

正確には、あなたのトップレベルのスクリプトはそれらの値を次のものに渡さなければなりません。argsを渡す魔法はありません。あなたはそれを自分で行う必要があります。私は偽装を削除し、誰かがこれを行う別の方法を知っているかどうかを確認します。 – adeneo

+0

[Node.jsにコマンドライン引数を渡すにはどうすればいいですか?](http://stackoverflow.com/questions/4351521/how-do-i-pass-command-line-arguments-to-node-js ) – adeneo

答えて

3

あなた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 run実行npm run takes-args -- -env devを実行したとき。成功!

calls-takes-argsにargsを渡さないと、末尾--は害を受けません。


編集:

あなたは/あなたのpackage.jsonを変更したくないことができない場合は、あなたがsomemodule -env devを実行します

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

を実行することができます。

+0

あなたは私の投稿を誤解しました。 :)コマンドラインで 'npm run calls-takes-args - -env dev'を実行しています。 "calls-takes-args"は単に '' npm run takes-args ''を実行するpackage.jsonで定義されたスクリプトです。 ***コマンドライン***からスクリプトに "-env dev"を渡したいと思っています*それは*呼び出し*です。 –

+0

@DonRhummy私はあなたが私の答えを誤解していると信じています。上記のスクリプトセクションを編集した場合、コマンドラインから 'calls-takes-args'を通して' takes-args'にパラメータを渡すことができます。 – RyanZim

+0

@DonRhummyよ、今私は理解していると思う。私は自分の答えを編集しました。 – RyanZim

関連する問題