npmスクリプトの引数として使用する場合、yargsからキーを取得するために呼び出すことは可能ですか?
OSX ターミナルでのユーザー タイプ:
npm run scaffold --name=blah
これは package.json で実行されます:
"scaffold" : "node ./scaffold/index.js -- "
これにより、
const yargs = require('yargs').argv
if (yargs) {
console.log(yargs);
console.log(yargs.name);
process.exit(1)
}
...
result:
{ _: [], '$0': 'scaffold/index.js' }
undefined
これは、 package.json"scaffold" : "node scaffold/index.js --name=blah"でハードコーディングした場合にのみ機能しますが、これを構成可能にする必要があります。
前述したように、配列ではなく名前でキーを簡単に取得できるように見えるため、args を使用しています。提案を受け付けます。
私は何が欠けていますか?
update 11-07-2017 関連:コマンドライン引数を npm スクリプトに送信する
ただし、コマンドライン1: npm run scaffold name=hello
ORを渡すと、次の2: npm run scaffold --name=hello結果が得られます。
1: { _: [], '$0': 'scaffold/index.js' }
2: { _: [ 'name=hello' ], '$0': 'scaffold/index.js' }
yargs.nameプロパティを取得する方法がまだわかりません。まだ定義されていません。
更新 13-07-2017
とりあえず、諦めました。それは不可能に思えます。ターミナルでスクリプトを手動で実行します。例えば
node ./scaffold/index.js --name=blah
以下の画像は、npm スクリプトを介して実行するのではなく、ノード スクリプトを直接実行することを示しています。https://www.npmjs.com/package/noptノード モジュールを追加して、それが役立つかどうかを確認しました (そうではありません)。process.argv.namenpm スクリプトを実行するときはまだ定義されていません。
2017 年 7 月 18 日更新
github の例を追加: https://github.com/sidouglas/stackoverflow-node-arguments
2017 年 7 月 24 日更新
コマンドの開始前に変数を追加すると
myvar="hello npm run scaffold、npm run scaffold myvar="hello world"
