Можно ли запросить извлечение ключа из yargs при использовании в качестве аргумента сценария npm?
Типы пользователей в терминале 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
Это работает только в том случае, если я жестко "scaffold": "node scaffold/index.js --name=blah"
в 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.name
по-прежнему не определено при запуске через скрипты npm.
Обновление 18-07-2017
Добавлен пример github: https://github.com/sidouglas/stackoverflow-node-arguments
Обновление 24-07-2017
Добавление переменных перед началом работы команды myvar="hello npm run scaffold
в отличие от npm run scaffold myvar="hello world"