Есть ли разница между int & a и int & a?

Редактировать 2014.10.30: Можно передать args в npm run с npm 2.0.0

Синтаксис выглядит следующим образом:

npm run [-- ]

Обратите внимание на --. Необходимо отделить параметры, переданные команде npm, и параметры, переданные вашему скрипту.

Итак, если у вас есть package.json

"scripts": {
    "grunt": "grunt",
    "server": "node server.js"
}

Затем следующие команды был бы эквивалентен:

grunt task:target => npm run grunt -- task:target

node server.js --port=1337 => npm run server -- --port=1337

Чтобы получить значение параметра, см. этот вопрос . Для чтения названных параметров лучше всего использовать библиотеку синтаксического анализа, такую ​​как yargs или minimist ; nodejs предоставляет process.argv глобально, содержащий значения параметров командной строки, но это низкоуровневый API (массив строк, разделенный пробелами, предоставляемый операционной системой исполняемому узлу).


Редактировать 2013.10.03: В настоящее время это невозможно. Но есть проблема GitHub, открытая на npm , чтобы реализовать поведение, о котором вы просите. Похоже, консенсус заключается в том, чтобы это реализовано, но это зависит от другой проблемы, которая была решена ранее.


Оригинальный ответ: как своего рода обходной путь (хотя и не очень удобный), вы можете сделать следующее :

Скажите, что ваше имя пакета из package.json равно myPackage, и вы также

"scripts": {
    "start": "node ./script.js server"
}

Затем добавьте package.json:

"config": {
    "myPort": "8080"
}

И в вашем script.js:

// defaulting to 8080 in case if script invoked not via "npm run-script" but directly
var port = process.env.npm_package_config_myPort || 8080

Таким образом, по умолчанию npm start будет использовать 8080. Однако вы можете настроить его (значение будет сохранено в npm во внутренней памяти) :

npm config set myPackage:myPort 9090

Затем при вызове npm start будет использоваться 9090 (значение по умолчанию от package.json становится переопределенным).

13
задан newprogrammer 30 December 2011 в 02:49
поделиться