Все нижеприведенные вещи известны многим, но для некоторых это может стать приятным открытием, что сэкономит некоторое количество набираемых в символов.
pre-/post- myscript
Иногда, в целях автоматизации некоторой рутины, но при малом желании тащить за собой N мегабайт зависимостей в виде разных билд-инструментов, а в некоторых случаях под впечатлением от статьи за авторством @substack’а, разработчики могут начать в своих npm script’ах писать длиннющие строки, состоящие из перечня команд и ‘&&’. По крайней мере, одним из выходов может служить разбитие одной сложной команды на несколько более простых. Самым замечательным является тот факт, что когда вы запускаете свой скрипт npm run-script myscript
, npm также попытается выполнить команды, что занесены в premyscript и postmyscript перед и после выполнения вашего скрипта соответственно. Таким образом, 3 сложных команды, что раньше составляли один скрипт, можно просто разнести в три скрипта.
Код, что отвечает за это, довольно таки прост, и пытается добавить к названию команды pre-/post- и запустить их в случае, если это сама по себе не pre/post команда и не команда ‘restart’, что обрабатывается особым способом.
npm run вместо run-script, npm i вместо npm install
Заголовок, в принципе, всё описывает: очень часто вместо «npm run-script» можно увидеть «npm run», или «npm i», что соответствует запуску команды «npm install». Код, что делает это, прост: используя библиотеку abbrev-js все команды из списка превращаются в огромный словарь, в котором ключами служат сокращения слов, вида:
{ i: 'install', in: 'install', ins: 'install', ...
И запускает соответствующую команду.
Нет необходимости писать пути для исполняемых файлов в скриптах
Иногда npm скрипты используются, чтобы запускать локально установленные npm пакеты с бинарниками. Но часто люди не знают об одной приятно особенности: npm во время исполнения добаляет папку node_modules/.bin в аналог переменой PATH. То есть, если у вас локально установленная mocha, вам не нужно писать
"scripts": { "test": "./node_modules/.bin/mocha" }
А достаточно лишь написать "test": "mocha"
. Приятным бонусом этого является то, что разработчики под виндоус перестанут жаловаться на то, что у них ничего не запускается (причина в том, что используются разные разделители в пути).
Бонус: require на файлах модуля
Команда require, оказывается, при работе с названиями модулей (а не относительными путями) может не только загрузить index.js/index.node файл из корня нашего модуля, что установлен в node_modules, но и предоставить возможность загрузить произвольный файл изнутри модуля (нарушая любую инкапсуляцию, но иногда может быть полезно). Поэтому можно делать require('module/lib/hidden-stuff')
.
Бонус #2: пасхалки в npm
В нпм есть парочку забавных пасхалок.
ссылка на оригинал статьи http://habrahabr.ru/post/230821/
Добавить комментарий