Подтвердить что ты не робот

Передача аргументов в npm script в package.json

Есть ли способ передать аргументы внутри команды package.json?

Мой script:

"scripts": {
  "test": "node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet"
}

cli npm run test 8080 production

Затем на mytest.js я хотел бы получить аргументы с помощью process.argv

4b9b3361

Ответ 1

Примечание. Работает только в среде оболочки, а не в Windows cmd. Вы должны использовать Bash на Windows, как Git Bash. Или попробуйте подсистему Linux, если вы используете win10.

Передача аргументов в скрипт

Чтобы передать аргументы в скрипт npm, вы должны предоставить их после -- для безопасности.

В вашем случае -- можно опустить. Они ведут себя одинаково:

npm run test -- 8080 production
npm run test 8080 production

Но когда аргументы содержат параметр (например, -p), -- необходим, иначе npm будет их анализировать и рассматривать как параметр npm.

npm run test -- 8080 -p

Используйте позиционные параметры

Аргументы просто добавляются к скрипту, который нужно запустить. Ваш $1 $2 не будет решен. Команда, которую на самом деле выполняет npm:

node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet "8080" "production"

Чтобы переменная положения работала в скрипте npm, оберните команду внутри функции оболочки:

"scripts": {
  "test": "run(){ node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet; }; run"
}

Или используйте инструмент scripty и поместите сценарий в отдельный файл.

package.json:

"scripts": {
  "test": "scripty"
}

скрипты/тест:

#!/usr/bin/env sh
node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet