2016-11-04 4 views
1

Я запускаю свой модуль из сценария в package.json. Когда я добавить аргументы командной строки, как показано ниже, она проходит только арг, которые не начинаются с минуса (-):Почему я не могу передать args с «-» на мой модуль узла из командной строки?

npm run myscript -one two 

В арг я получаю являются:

[ 
    '/home/myhome/apps/node-v6.4.0-linux-x64/bin/node', 
    '/home/myhome/Development/code/node_modules/.bin/mymodule', 
    'two' 
] 

Любой Arg добавить с одним или несколькими минус-символами в начале, не передаются. Даже если я помещаю их в кавычки, например, npm run myscript "--one two" или npm run myscript "--one" two - он по-прежнему не отправит его моему модулю.

Как получить эти аргументы командной строки?

+1

Вы пробовали 'НПМ запустить MyScript - -он two'? См. Https://docs.npmjs.com/cli/run-script. –

+0

Я только что обнаружил это. Это похоже на грязный взлом, но он работает. Благодарю. –

ответ

1

После еще поиска и тестирования, по-видимому, единственный способ передать их через это префикс для ваших арг с -- -arg something. Обратите внимание на пробел после --. Без этого пространства это не сработает. Например, это будет не передать вам аргумент: npm run myscript --ignore -arg e. Вы должны сделать это как:

npm run myscript -- -one two 

См: https://github.com/npm/npm/issues/3494#issue-14832427

0

Вы должны пройти так, то вы можете захватить его с помощью process.env.

npm run myscript --one=somevalue --two=somevalue 
+0

Вы попробовали это? Это не работает. –

+0

Это работает ... для меня .. удалены цитаты ... btw, я думаю, у вас есть ответ ... – Thalaivar

+0

Просто сделал это снова, все еще не работает для меня. Какая версия npm у вас есть? (У меня 3.10.3, а мой узел равен 6.4.0) –