Да, вы правы, согласно документации npm , вы должны передать дополнительный "-", чтобы указать аргументы скрипту npm , но вы не передадите его в правильное место.
Вам не нужно передавать его в конце вашего package.json
«тестового» скрипта, но непосредственно в командной строке, которая вызывает вашего скрипта.
Таким образом, npm понимают, что это аргументы для вашего сценария, а не для самой команды npm :
// cli
$ npm run test -- FOO --BAR 99RedBalloons // "--" before arguments
/* or */
$ npm run test -- FOO --BAR=99RedBalloons
// package.json
"scripts": {
"test": ". ./.env; node app.js"
}
// app.js
const { argv } = require('yargs');
console.log(argv);
// -> { _: [ 'FOO' ], BAR: '99RedBalloons', '$0': 'app.js' }
Я не нашел встроенной опции yargs , чтобы сделать это, но в качестве альтернативы, если вы хотите, чтобы все ваши аргументы были в переменной массива _
, вы можете сделать что-то вроде этого:
for (let cmd in argv)
if (cmd !== '$0' && cmd !== '_')
argv._[cmd] = argv[cmd]
console.log(argv._)
// -> [ 'FOO', BAR: '99RedBalloons' ]