19

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 scaffoldnpm run scaffold myvar="hello world"

4

3 に答える 3