- PVSM.RU - https://www.pvsm.ru -

NPM 2.0.0 & передача аргументов в run-script

22 июля случилось небольшое, но знаментаельное событие: был принят пулл-реквест [1], что добавлял поддержку передачи произвольных аргументов в ваши npm script'ы. Уже появился альфа-релиз [2] npm весрии 2.0.0, что включает эту возможность.

Для начала, почему это хорошо?
Исторически сложилось, что некоторый вид node-пакетов (билд-инструменты, тест-раннеры) использовали два вида набора пакетов: один установленный глобально, который обычно имел постфикс -cli (karma-cli, grunt-cli), что запускал локально установленный пакет в node_modules. Это позволяло использовать разные версии тест-раннеров, без необходимости ломать все тесты во всех других проектах при необходимости обновить пакет в каком-нибудь из них. Это, в своё время, стало отличным решением для grunt (версия 0.4.0 применила этот подход, что помогло избежать многих проблем с обратной несовместимостью пакетов).
Также, есть факт того, что при запуске npm script'а, в путь исполняемых файлов добавляются node_modules/.bin, в котором, в принципе, и лежат те самые раннеры/билдеры, что запускаются глобальным cli пакетом. Это позволяет в своём package.json добавить:

scripts: {
 grunt: "grunt build"
}

и запускать локально установленный grunt простым npm run grunt. Проблемой по сей день был случай, когда вам нужно было передать аргументы в ваш npm script – это было невозможно.
Теперь же станет возможным, добавив в своём package.json

scripts: {
 grunt: "grunt"
}

использовать команды вида npm run grunt - build или npm run grunt - build --verbose. В одном из комментариев [3] к оригинальному пулл-реквесту предлагается просто создать алиас вида alias gr='npm run grunt --' и запускать билд простым gr build.

Автор: BenalishTrapper

Источник [4]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/65723

Ссылки в тексте:

[1] пулл-реквест: https://github.com/npm/npm/pull/5518

[2] альфа-релиз: https://github.com/npm/npm/releases/tag/v2.0.0-alpha-5

[3] одном из комментариев: https://github.com/npm/npm/pull/5518#issuecomment-48440496

[4] Источник: http://habrahabr.ru/post/230831/