Изначально опубликовано в моем блоге

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 за вычитку черновика этого сообщения!