Секция Scripts позволяет описывать произвольные команды, которые затем можно выполнять.

"scripts": {
    "test": "jest",
    "build": "NODE_ENV=production babel src --out-dir dist --source-maps inline",
    "prepublishOnly": "npm run build"
  }

Рассмотрим пример. Предположим, что мы установили программу sloc как зависимость и хотим ее запускать с определенными параметрами.

"scripts": {
    ...
    "sloc": "sloc",
    ...
  }

Имя свойства используется как команда в командной строке, значение — исполняемая программа. Теперь, если вы попробуете сделать так: npm run sloc, то все отработает как и ожидается.

Некоторые свойства в Scripts, такие как publish, test, stop, start, restart, имеют особое значение. Например, на Хекслете код проверяется автоматическими тестами с использованием библиотеки jest. Она содержит бинарник с тем же именем и все, что нужно сделать для запуска тестов - выполнить команду jest. Мы могли бы сделать в скриптах такую запись: "jest": "jest", но именно для тестов NPM предлагает делать так: "test": "jest". Главное отличие подобных встроенных команд — в их способе запуска. Достаточно набрать npm test вместо npm run test, хотя второй вариант также сработает.

nodejs-package$ npm test

> [email protected] test /Users/mokevnin/hexlet/nodejs-package
> jest

 PASS  __tests__/half.test.js
  ✓ half (3ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        0.242s, estimated 1s
Ran all test suites.

Hooks

Есть целый набор предопределенных свойств в Scripts, которые NPM запускает автоматически в разные моменты жизни. Подробнее об этом можно прочитать в официальной документации. Одним из таких свойств является свойство prepublishOnly, которое используется тогда, когда перед публикацией пакета в репозиторий NPM необходимо выполнить некоторые действия, например, сгенерировать документацию. Команда, указанная в нем, запустится во время выполнения npm publish.

Самостоятельная работа

  • Попробуйте выполнить скрипт test в пакете nodejs-package
Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →