curl https://npmjs.org/install.sh | sh
npm install npm -g
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
Важно. В некоторых случаях будут патчи, форки или ветви, которые вы хотите использовать, но которые еще не были опубликованы в npm. К счастью исходные коды для большинства npm модулей также доступна на www.github.com
git clone git://github.com/nodeapps/http-server.git cd http-server/ npm link
Теперь наша клонированная версия http-server связана локально.
cd mypackage/ npm publish
npm unpublish http-server
npm adduser vladimir-r
Вы можете задать права доступа других пользователей к опубликованному пакету:
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
Наконец, если вы сами будете писать пакеты, вам следует быть примерным гражданином — подобрать лицензию для программного обеспечения и правильно ее задокументировать. Нет ничего более неприятного для разработчика, чем не- обходимость при использовании чужого пакета рыться в исходном коде, чтобы выяснить, каково лицензирование, или, что еще хуже, обнаружить, что он вообще не лицензирован.
Создайте модуль и опубликуйте его, добавьте пользователей которые могут изменять его. Удалите модуль.