Изначально опубликовано в моем блоге
npm поддерживает свойство scripts в package.json - одну из наиболее часто используемых, но также и одну из самых недооцененных функций npm.
Что делает свойство scripts?
Скорее всего, вы используете сценарии, если используете npm: всякий раз, когда вы вводите $ npm run ‹command› (что является сокращенной версией $ npm run-script ‹command›) в терминал, это запускается скрипт.
Также есть несколько специальных предопределенных псевдонимов, которые преобразуются в версию npm run, например $ npm test конвертируется в $ npm run test за кулисами, и их можно использовать взаимозаменяемо.
Еще несколько псевдонимов: $ npm install, $ npm publish, $ npm start,… полный список
Что делает npm таким мощным, так это то, что он добавляетnode_modules / .bin (где устанавливаются зависимости) к PATH, предоставленному скриптам. На понятном английском языке это означает, что вы можете использовать установленные вами зависимости в командной строке без необходимости устанавливать их глобально!
Использование в реальном мире
Допустим, вы используете Mocha для модульного тестирования. Если вы хотите запустить свои модульные тесты, вам обычно нужно npm install -g mocha (аргумент -g устанавливает пакет глобально на ваш компьютер), чтобы получить доступ к команде терминала mocha. Это позволяет запускать модульные тесты в терминале:
$ mocha *.test.js
Это работает, но также требует, чтобы все разработчики, работающие над этим проектом, выполнили npm install -g mocha. Не у всех может быть разрешение на это на своей машине, или кто-то может забыть, и это приведет к досадным проблемам в будущем.
Скрипты npm спешат на помощь!
Используя скрипты npm, мы можем указать Mocha как adevDependency в нашем package.json:
"devDependencies": { "mocha": "" }
Примечание. Не забудьте добавить диапазон версий, чтобы критические изменения в Mocha не повлияли на вашу настройку.
Теперь, когда разработчики вводят $ npm install (которая является частью каждой начальной настройки) в терминал, у них установлен Mocha. Проблема в том, что он не установлен глобально, поэтому, введя $ mocha * .test.js в терминал, вы получите / usr / local / bin / mocha: No such file or directory error.
Мы можем обойти это, добавив тестовый скрипт в yourpackage.json. Поскольку сценарии npm добавляют папку node_modulesfolder в PATH, у нас есть доступ к команде mocha оттуда, даже если она не установлена глобально!
Давайте добавим этот тестовый сценарий:
"scripts": { "test": "mocha *.test.js" }
Теперь ваши сотрудники могут ввести $ npm run test в терминал, и Mocha проведет модульное тестирование вашего приложения без необходимости устанавливать что-либо глобально!
Спасибо @helloanselm за вычитку черновика этого сообщения!