Установка npm

curl https://npmjs.org/install.sh | sh

Обновление npm

npm install npm -g

Поиск пакетов в npm

npm search hook.io

Подсказка: Можно также использовать search.npmjs.org Вторая подсказка: Для поиска необходимо знать имя нужного пакета (всё прекрасно ищет по любому слову как в имени пакета, так и в его описании)


Понимание разницы между глобальной и локальной установкой

По умолчанию npm будет устанавливать все пакеты в локальном каталоге, в которым вы сейчас работаете. Это правильно. Это может показаться немного запутанным, если вы раньше работали с предыдущими системами управления пакетами.

Например:
mkdir anotherapp/
 cd anotherapp/
 touch test.js

test.js

var HTTPServer = require('http-server');

теперь запустим наш скрипт

node test.js

мы получим эту ошибку:

node.js:134
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
Error: Cannot find module 'http-server'
    at Function._resolveFilename (module.js:326:11)
    at Function._load (module.js:271:25)
    at require (module.js:355:19)
    at Object. (/Users/maraksquires/dev/nodeapps/anotherapp/test.js:1:80)
    at Module._compile (module.js:411:26)
    at Object..js (module.js:417:10)
    at Module.load (module.js:343:31)
    at Function._load (module.js:302:12)
    at Array. (module.js:430:10)
    at EventEmitter._tickCallback (node.js:126:26)

Это вполне логично, мы установили http-server локально в "/mynewapp/", а не в "/anotherapp/".

Есть два решения в этой ситуации:

а) Установить ещё раз пакет, но локально в наше новое приложение

cd anotherapp/
 npm install http-server

б) Установить пакет глобально

npm install http-server -g

Глобальная установка пакетов

Если вы хотите чтобы пакет был доступен всем приложениям, его нужно установить глобально:

npm install http-server -g

Флаг -g означает, что http-server должен быть установлен глобально и быть доступными для всех приложений. Теперь мы можем вызывать его require('http-server') в любом нашем приложении.

Кроме того, поскольку http-server пакет имеет свой исполняемый файл, то этот файл также будет установлен как исполняемый http-server и доступен в командах. Теперь вы можете просто запустить команду:

http-server

Удаление локально установленного пакета

npm uninstall http-server

Удаление глобально установленного пакета

npm uninstall http-server -g

Установка определённой версии пакета

npm install http-server@0.3.0

Установка модуля с Github

Важно. В некоторых случаях будут патчи, форки или ветви, которые вы хотите использовать, но которые еще не были опубликованы в npm. К счастью исходные коды для большинства npm модулей также доступна на www.github.com

git clone git://github.com/nodeapps/http-server.git
cd http-server/
npm link

Теперь наша клонированная версия http-server связана локально.


Публикация пакета в репозиторий npm

cd mypackage/
npm publish

Публикация пакета в репозиторий npm

npm unpublish http-server

Добавить пользователя

npm adduser vladimir-r

Управление правами доступа к пакетам в репозитории npm

Вы можете задать права доступа других пользователей к опубликованному пакету:

npm owner add marak http-server
npm owner rm marak http-server
npm owner ls http-server

Оставить в пакетном менеджере свой отзыв о модулях, которые вам понравились.

npm star modulename

Лицензирование

При разработке веб-приложений Node вы можете обнаружить, что уделяете лицен- зированию гораздо больше внимания, чем когда-либо раньше (я определенно уделяю). Одно из преимуществ экосистемы Node — огромный набор доступных вам пакетов. Однако у каждого из этих пакетов свои правила лицензирования, хуже того, каждый пакет может зависеть от других пакетов, а значит, условия ли- цензирования различных частей написанного вами приложения могут оказаться запутанными.

Однако есть и хорошие новости. Одна из наиболее популярных лицензий для пакетов Node — лицензия MIT — исключительно либеральна и позволяет вам делать практически все, что хотите, включая использование пакета в про- граммном обеспечении с закрытым исходным кодом. Однако не следует просто предполагать, что каждый используемый вами пакет лицензирован под лицензи- ей MIT.


В npm доступны несколько пакетов, которые могут попробовать выяснить лицензии для каж- npm доступны несколько пакетов, которые могут попробовать выяснить лицензии для каж- доступны несколько пакетов, которые могут попробовать выяснить лицензии для каж- дой зависимости в вашем проекте. Поищите в npm license-sniffer или license-spelunker.


Хотя MIT — наиболее распространенная лицензия, с которой вы столкнетесь, вы можете также увидеть следующие лицензии.

 Стандартная общественная лицензия GNU (GNU General Public License, GPL). GPL — очень распространенная лицензия для программного обеспече- — очень распространенная лицензия для программного обеспече- ния с открытым исходным кодом, искусно разработанная для сохранения программного обеспечения свободным. Это значит, что, если вы используете лицензированный по GPL код в своем проекте, проект обязан тоже быть GPL- лицензированным. Естественно, это значит, что проект не может иметь закрытый исходный код.

 Apache 2.0. Эта лицензия, подобно MIT, позволяет использовать другую ли- MIT, позволяет использовать другую ли- , позволяет использовать другую ли- цензию для проекта, в том числе лицензию с закрытым исходным кодом. Вы обя- заны, однако, включить уведомление о компонентах, использующих лицензию Apac�e 2.0.

 Лицензия университета Беркли для ПО (Berkeley Software Distribution, BSD). Подобно Apac�e, эта лицензия позволяет использовать для проекта какую угод- Apac�e, эта лицензия позволяет использовать для проекта какую угод- , эта лицензия позволяет использовать для проекта какую угод- но лицензию при условии включения уведомления об использующих лицензию BS� компонентах.


Программное обеспечение иногда бывает с двойным лицензированием (лицензировано под двумя различными лицензиями). Часто это происходит из-за желания разрешить использо- вание программного обеспечения как в проектах GPL, так и в проектах с более либеральным лицензированием (чтобы можно было использовать компонент в GPL-лицензированном про- GPL-лицензированном про- -лицензированном про- граммном обеспечении, этот компонент сам должен быть GPL-лицензированным). Схема лицензирования, которую я часто использую в своих проектах, — двойное лицензирование GPL и MIT


Наконец, если вы сами будете писать пакеты, вам следует быть примерным гражданином — подобрать лицензию для программного обеспечения и правильно ее задокументировать. Нет ничего более неприятного для разработчика, чем не- обходимость при использовании чужого пакета рыться в исходном коде, чтобы выяснить, каково лицензирование, или, что еще хуже, обнаружить, что он вообще не лицензирован.

Разбираемся с версиями пакетов в node

Задача

Создайте модуль и опубликуйте его, добавьте пользователей которые могут изменять его. Удалите модуль.