NPM — универсальный инструмент для разработки приложений. Работа, которую он выполняет, является необходимым минимумом, чтобы полностью покрыть потребности в настройке и запуске своего приложения.
Нужны зависимости? — Легко, используйте npm install
Хотите запустить его? — Ну вот, определите свои "scripts”
в package.json
и попробуйте их с npm run
Нужен поток сборки? — Покопайтесь в npm потоки скриптов и никаких проблем. С небольшой помощью npm-run-all
он может достичь любого уровня маневренности.
Использовать npm-скрипты легко, когда проект небольшой, скрипты просты, так как их немного:
{ "scripts": { "clean": "rimraf", "test": "mocha", "lint": "eslint" "build": "webpack" } }
Предоставление параметров CLI для этих скриптов выглядит следующим образом:
$ npm run test -- --fgrep "@unit" npm run - NPM command to run one of "scripts" test - script to run the tests -- - NPM notation to insert parameters inside the used script --fgrep "@unit" - mocha parameter that grabs tests tagged with @unit for the test run
Но ладно. Это очень простой пример, в реальной жизни и в проектах, связанных с производством, мы можем оказаться в ситуации, когда вложенные скрипты NPM используются для инкапсуляции или повторного использования уже написанной логики:
{ "scripts": { "clean": "rimraf", "test": "mocha", <-- 1 level of nesting "test:unit": "npm run test -- --fgrep '@unit'", <-- 2 level of nesting "test:e2e": "npm run test -- --fgrep '@e2e'", "test:unit:trace": "npm run test:unit -- -- --full-trace" <-- 3 level of nesting } }
Что, если в интерфейсе командной строки мы все равно захотим добавить в команду некоторые параметры mocha?
Все просто — определите уровень вложенности для команды, которая должна получить дополнительные параметры, и добавьте соответствующее количество --
в финальную CLI-команду:
{ "scripts": { "clean": "rimraf", "test": "mocha", <-- nesting level 1 "test:unit": "npm run test -- --fgrep '@unit'", <-- nesting level 2 "test:e2e": "npm run test -- --fgrep '@e2e'", "test:all": "npm run test:unit " <-- nesting level 3 } }
В результате команды CLI будут выглядеть так:
# test:all with nesting level 3 will have three '--' to add parameters to mocha $ npm run test:all -- -- -- --parallel # test:e2e with nesting level 2 will have two '--' to add parameters to mocha $ npm run test:e2e -- -- --full-trace # test:e2e with nesting level 1 will have a single '--' to add parameters to mocha $ npm run test -- --fgrep "@e2e"