Как передать аргумент командной строки вложенному скрипту?
Примечание: речь идет не об отправке args в скрипт верхнего уровня, а в скрипт, вызываемый тем скриптом
В моем пакете.json, когда я вызываю скрипт, который принимает args командной строки напрямую, он работает. Но когда я вызываю сценарий, который вызывает этот другой сценарий, он не передает ему args командной строки. Как мне их передать?
{
...
"takes-args": "somemodule",
"calls-takes-args": "npm run takes-args"
}
Когда я выполняю нижеприведенную команду, 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
Есть ли какой-нибудь способ?1 ответ:
Ваше поле
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 dev,npm runбежитnpm run takes-args -- -env dev. Успех!Если вы не передадите args в
calls-takes-args, трейлинг--не будет ранить.
Правка:
Если вы не можете/не хотите изменять свой
package.json, вы можете запуститьnpm run calls-takes-args -- -- -env devЭто будет работать
somemodule -env dev.