2016-06-16 2 views
3

Заголовок говорит все. Я хочу, чтобы передать аргумент в середине скрипта npm, чтобы я мог сделать следующее.Передача аргумента в середину сценария npm

$ npm run deploy -- <destination-path> 

В package.json

"scripts": { 
    "deploy": "robocopy dist <destination-path> /E /NP" 
} 

ли это возможно без использования переменных окружения или конфигурационные переменные НПМ?

ответ

3

Per Passing args into run-scripts #5518 может показаться, что это не возможно передать аргументы в середине сценария.

Мы не собираемся поддерживать прохождение args в середине скрипта, извините. Если вам это действительно нужно, напишите свою тестовую команду, используя буквально любой из парсеров командной строки, которые каждый использует. (Minimist, dashdash, Nopt, и командир все поддерживает это просто отлично.)

Однако альтернатива этому с помощью npm configuration block has been documented here. Моя реализация будет выглядеть следующим образом:

"name": "foo" 
"config": { "destination" : "deploy" }, 
"scripts": { "deploy": "robocopy dist %npm_package_config_destination% /E /NP" } 

Затем я могу переопределить в командной строке и на моем сервере сборки с:

npm run deploy --foo:destination=C:\path\to\deploy\dir 
2

Вы можете использовать переменную окружения для установки пути назначения.

PATH=/path/to/file npm run deploy -- $PATH

или

export PATH=/path/to/file

npm run deploy -- $PATH

+0

Я прояснить мой вопрос. Я пытаюсь избежать необходимости устанавливать переменные среды для управления поведением сценария. Хотя это может быть единственный способ. –

+0

В каком контексте вы бы использовали это, чтобы переменные среды не были удобны? – William

+0

Обычно я предпочитаю передавать аргументы в любой исполняемый файл через командную строку, а не через переменные среды. В этом конкретном случае запуск npm run - 'выполняется с сервера сборки Jenkins. Я не уверен, что приведенный вами пример касается проблемы. Я хочу принять аргумент, который передается в конце «npm run deploy» - ', в этом случае' 'до середины команды, выполняемой определенным сценарием развертывания в package.json. Тем не менее, кажется, что npm может передавать аргументы только в конец скрипта, а не в середине. –

Смежные вопросы