Команды для работы с NPM. Введение в пакетный менеджер NPM для начинающих Установка пакета в наше приложение

n pm. это менеджер пакетов JavaScript, который может быть использован для установки, совместного использования и распространения кода, а также для управления зависимостями в ваших проектах. Он полностью написан на JavaScript, как вдохновение от других подобных проектов, как PEAR для PHP или CPAN для Perl. На этом уроке мы покажем вам, как установить npm на Ubuntu 16.04 в качестве операционной системы.

Самое первое, что вам нужно сделать, это и обновить программное обеспечение системы до последней доступной версии. Вы можете сделать это с помощью следующей команды:

Sudo apt-get update && sudo apt-get -y upgrade

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

npm поставляется в комплекте с Node.js, поэтому установить NPM вам нужно только если установили Node.js на вашем . Чтобы установить Node.js 4.x LTS на Ubuntu 16.04 , выполните следующие команды:

Curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash - sudo apt-get install -y nodejs

В качестве альтернативы, для установки Node.js 6.x на Ubuntu 16.04 , которая является текущей версии Node.js, выполните следующие команды:

Curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - sudo apt-get install -y nodejs

Чтобы убедиться, что установка прошла успешно, вы можете проверить версию npm:

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

# npm -v 2.15.9

Хороший способ начать использовать npm, чтобы прочитать справочную страницу npm или документацию npm. Чтобы проверить страницу npm справки, введите следующую команду:

Npm help

Вот страница npm help:

# npm help Usage: npm where is one of: access, add-user, adduser, apihelp, author, bin, bugs, c, cache, completion, config, ddp, dedupe, deprecate, dist-tag, dist-tags, docs, edit, explore, faq, find, find-dupes, get, help, help-search, home, i, info, init, install, issues, la, link, list, ll, ln, login, logout, ls, outdated, owner, pack, ping, prefix, prune, publish, r, rb, rebuild, remove, repo, restart, rm, root, run-script, s, se, search, set, show, shrinkwrap, star, stars, start, stop, t, tag, team, test, tst, un, uninstall, unlink, unpublish, unstar, up, update, upgrade, v, version, view, whoami npm -h quick help on npm -l display full usage info npm faq commonly asked questions npm help search for help on npm help npm involved overview Specify configs in the ini-formatted file: /root/.npmrc or on the command line via: npm --key value Config info can be viewed via: npm help config [email protected] /usr/lib/node_modules/npm

Документация npm доступна на

Существует достаточно документации, в которой раскрывается вопрос «Почему Node?». Но что для меня действительно важнее, это не где Node находится сегодня, а где он будет завтра. Без сомнения, сообщество Rails принесло много к столу, но все эти замечательные идеи сложно проглотить, потому что они оказались заперты внутри Ruby. Каким бы потрясающим не был Ruby, не каждый желает стать разработчиком на Ruby.

В зависимости от процесса установки, npm может быть установлен, а может быть и нет. Для проверки просто запустите:

$ npm --version

Если npm не установлен, выполните следующее:

$ curl http://npmjs.org/install.sh | sh

npm - менеджер пакетов для Node, так что вы не можете использовать менеджер пакетов для установки менеджера пакетов.

Использование npm

Теперь, когда npm установлен, все зарегистрированные пакеты являются просто командой в консоли. Для базовой установки пакета выполните:

$ npm install <пакет>

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

Чтобы сделать это, вам нужно добавить флаг -g в процессе установки:

$ npm install -g <пакет>

В зависимости от того, как Node.js установлен в вашей системе, у вас может не оказаться доступа для установки глобального пакета. Чтобы обойти это, просто добавьте команду sudo в начале:

$ sudo npm install -g <пакет>

Использование npm с проектом

Наиболее распространённым примером использования npm является поддержка манифеста зависимостей для вашего проекта. Всё это хранится в файле package.json .

Вы можете создать этот файл самостоятельно, хотя также есть методы сгенерировать этот файл. В любой папке просто запустите npm init и в консоли вы пройдёте через ряд вопросов, в результате получите что-то вроде такого:

{ "name": "toss-this", "version": "0.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }

Если в вашем проекте уже содержится package.json, добавить в него пакет очень легко с помощью npm install. Просто включите флаг --save в команду следующим образом:

$ npm install <пакет> --save

Добавление Grunt в проект обновит package.json, добавив объект dependencies в файл:

{ "name": "toss-this", "version": "0.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "grunt": "^0.4.5" } }

В добавление к этому, если вы хотите указать зависимость только для разработки, а не для рабочего проекта, то передайте флаг -dev:

$ npm install <пакет> --save-dev

Добавив Gulp как зависимость для разработки, в файле package.json появится объект devDependencies:

{ "name": "toss-this", "version": "0.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "grunt": "^0.4.5" }, "devDependencies": { "gulp": "^3.6.2" } }

Узнайте больше о npm

npm удивительно сложная утилита, когда дело доходит до управления пакетами. Смотрите эту шпаргалку по npm для получения дополнительной подробной информации.

Узнайте больше о package.json

package.json содержит много особенностей. Чтобы узнать больше о том, как это всё работает, посетите

Node.js делает возможным написание серверных приложений на JavaScript. Он построен на движке JavaScript V8 и написан на C++ - и поэтому он быстрый. Изначально он создавался как серверное окружение для приложений, но разработчики начали использовать его для создания инструментов, помогающих автоматизировать выполнение локальных задач. В итоге возникшая вокруг Node.js новая экосистема инструментов (типа Grunt и Gulp), привела к трансформации процесса фронтенд-разработки.

Чтобы использовать все эти инструменты (или пакеты) в Node.js нам нужна возможность устанавливать и управлять ими. Для этого создан npm, пакетный менеджер Node.js. Он устанавливает нужные вам пакеты и предоставляет удобный интерфейс для работы с ними. Но перед тем как начать использовать npm, вам надо установить в своей системе Node.js.

Установка Node.js

В этой статье мы будем использовать стабильную версию 5.7.0.

Посмотреть, где установлен Node и проверить версию можно следующими командами:

$ which node /usr/local/bin/node $ node --version v5.7.0

Чтобы удостовериться, что установка прошла успешно, выполним несколько команд в простой интерактивной среде Node (REPL).

$ node > console.log("Node is running"); Node is running > .help .break Sometimes you get stuck, this gets you out .clear Alias for .break .exit Exit the repl .help Show repl options .load Load JS from a file into the REPL session .save Save all evaluated commands in this REPL session to a file > .exit

Установка работает, поэтому теперь мы можем сфокусироваться на npm, который включен в установку.

$ which npm /usr/local/bin/npm $ npm --version 3.6.0

Пакеты Node

С помощью npm можно устанавливать пакеты локально или глобально. В локальном режиме пакеты устанавливаются в каталог node_modules родительского каталога. Владельцем каталога является текущий пользователь. Глобальные пакеты устанавливаются в каталог {prefix}/lib/node_modules/ , владельцем которого является root (префиксом в данном случае обычно является каталог /usr/ или /usr/local). Это значит, что вам надо использовать sudo для глобальной установки пакетов, что может повлечь ошибки с полномочиями при разрешении сторонних зависимостей, а также создает проблему для безопасности. Изменим это:

Изменение места установки глобальных пакетов

Посмотрим, что скажет нам команда npm config .

$ npm config list ; cli configs user-agent = "npm/3.6.0 node/v5.7.0 linux x64" ; node bin location = /usr/local/bin/node ; cwd = /home/sitepoint ; HOME = /home/sitepoint ; "npm config ls -l" to show all defaults.

Мы получили основную информацию об установке. Теперь важно узнать место установки глобальных пакетов:

$ npm config get prefix /usr/local

Этот префикс мы хотим изменить так, чтобы устанавливать пакеты в свой домашний каталог. Для этого создайте в домашнем каталоге папку.node_modules_global и укажите ее в качестве места установки пакетов в конфигурации:

$ cd && mkdir .node_modules_global $ npm config set prefix=$HOME/.node_modules_global

Внеся такую небольшую правку в конфигурацию, мы изменили место для глобальной установки пакетов. Также в нашем домашнем каталоге появился файл.npmrc .

$ npm config get prefix /home/sitepoint/.node_modules_global $ cat .npmrc prefix=/home/sitepoint/.node_modules_global

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

$ npm install npm --global /home/sitepoint/.node_modules_global/bin/npm -> /home/sitepoint/.node_modules_global/lib/node_modules/npm/bin/npm-cli.js /home/sitepoint/.node_modules_global/lib └── [email protected]

Наконец, нам надо добавить.node_modules_global/bin в нашу переменную окружения $PATH , чтобы мы могли запускать глобальные пакеты из командной строки. Сделаем это, добавив следующую строку в файл.profile или.bash_profile и перезапустив терминал.

Export PATH="$HOME/.node_modules_global/bin:$PATH"

Теперь командная оболочка будет сразу находить пакеты, установленные в.node_modules_global/bin и использовать корректную версию npm .

$ which npm /home/sitepoint/.node_modules_global/bin/npm $ npm --version 3.7.5

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

На данный момент у нас уже есть один глобальный пакет - это сам пакет npm. Изменим это и установим еще один пакет, это будет UglifyJS (инструмент для минификации JavaScript). Для глобальной установки используется флаг --global , его можно записывать сокращенно -g .

$ npm install uglify-js --global /home/sitepoint/.node_modules_global/lib └─┬ [email protected] ├── [email protected] ├── [email protected] ├── [email protected] └─┬ [email protected] ├── [email protected] ├─┬ [email protected] │ ├─┬ [email protected] │ │ ├─┬ [email protected] │ │ │ ├─┬ [email protected] │ │ │ │ └── [email protected] │ │ │ ├── [email protected] │ │ │ └── [email protected] │ │ └── [email protected] │ ├── [email protected] │ └── [email protected] ├─┬ [email protected] │ └── [email protected] └── [email protected]

Как вы можете видеть из вывода в консоль, у нас установлены дополнительные пакеты - это зависимости UglifyJS.

Вывод списка установленных пакетов

Мы можем вывести список глобально установленных пакетов с помощью команды npm list с опцией --global:

$ npm list --global ├─┬ [email protected] │ ├── [email protected] │ ├── [email protected] │ ├── [email protected] │ ├── [email protected] .................... └─┬ [email protected] ├── [email protected] ├── [email protected] ├── [email protected]

Такой вывод списка, со всеми зависимостями, перенасыщен. Мы можем выводить его в более читаемом виде с помощью опции --depth=0:

$ npm list -g --depth=0 ├── [email protected] └── [email protected]

Стало лучше - теперь мы видим только список установленных пакетов с номерами их версий, без зависимостей.

Теперь мы можем обрабатывать файлы JavaScript в терминале с помощью UglifyJS. Например, следующая команда сделает из файла example.js минифицированный example.min.js:

$ uglifyjs example.js -o example.min.js

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

Локальная установка используется в npm по умолчанию, то есть достаточно не использовать флаг --global . Пакет будет установлен в каталог node_modules родительского каталога. Создадим каталог с проектом в нашем домашнем каталоге:

$ mkdir ~/project && cd ~/project $ npm install underscore /home/sitepoint/project └── [email protected] $ ls node_modules $ ls node_modules underscore

Вывод списка локальных пакетов

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

$ npm list /home/sitepoint/project └── [email protected]

Как видите, мы можем устанавливать локальные пакеты, где угодно. Это также значит, что мы можем создать другой каталог и установить туда другую версию пакета (в нашем случае это библиотека underscore).

Удаление локальных пакетов

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

$ npm uninstall underscore - [email protected] node_modules/underscore $ npm list /home/sitepoint/project └── (empty)

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

Теперь установим нужную версию underscore. В команде установки номер версии указывается после символа @ :

$ npm install [email protected] /home/sitepoint/project └── [email protected] $ npm list /home/sitepoint/project └── [email protected]

Обновление пакета

В последней версии underscore исправили мешавший нам баг и мы хотим обновить версию этого пакета.

$ npm update underscore [email protected] node_modules/underscore $ npm list /home/sitepoint/project └── [email protected]

Примечание: для этой статьи, библиотека underscore была указана как зависимость в package.json (см. ).

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

Мы уже пару раз использовали команду mkdir . Есть ли пакет node с подобным функционалом?

$ npm search mkdir npm WARN Building the local index for the first time, please be patient

Заключение

В этой статье освещены основы работы с npm. Я показал, как установить Node.js, как изменить место установки глобальных пакетов (так мы можем избежать использования sudo) и как установить пакеты локально и глобально. Я также рассмотрел удаление, обновление и установку определенной версии пакета, а также управление зависимостями проекта.

В каталоге npm тысячи пакетов и их число будет расти, с учетом анонса jQuery о публикации всех плагинов как пакетов npm.

JavaScript является неотъемлемой частью веб-разработки. Front-end разработчики используют JavaScript для усовершенствования пользовательского интерфейса, добавление интерактивности, AJAX передачи данных и т.д..

На самом деле при достаточных знаниях JavaScript вы сможете работать с "полным стеком" веб-приложений. Ключ к этому - Node.js, который делает возможность запускать JavaScript на стороне сервера.

Node.js также используется в разработке приложений для настольных компьютеров и средств деплоя (развертывания) приложений, которые делают веб-приложение проще. Например, установив Node.js на свой компьютер, вы сможете быстро конвертировать CoffeeScript в JavaScript, SASS в CSS, а также уменьшить размер вашего HTML, JavaScript и графических файлов.

Кроме установленного Node.js вам также понадобится NPM, который предназначен для установки и управления модулями Node.js. С NPM вы сможете намного проще добавлять много новых и полезных инструментов в ваш проект.

Как работать с Node.js

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

Установка Node.js

Установка Node.js и NPM довольно проста, все делается с помощью установочного пакета, который можно загрузить с веб-сайта Node.js: .

1. Загрузите установщик для Windows с официального сайта

2. Запустите программу установки

3. Следуйте инструкциям в программе установки

4. Перезагрузите компьютер для корректной работы Node.js

Проверяем корректность установки Node.js и NPM

Для того чтобы убедиться, что все успешно установлено, необходимо выполнить простые команды.

Проверяем Node.js

Для проверки Node.js необходимо открыть командную строку (консоль (Win + R и введите cmd)) и выполнить команду:

Команда вернет текущую версию node.js

Проверяем NPM

Для того, чтобы проверить установлен ли NPM необходимо в командной строке (консоле) выполнить команду:

Команда вернет текущую версию NPM

Пробуем как node.js работает с файлом

Для примера создайте файл test.js со следующим содержанием:

Console.log("Node is installed!");

И в командной строке (консоле) выполните следующую команду:

Node test.js

Как обновить Node.js и NPM

Для установки новых версий Node.js и NPM просто скачайте последнюю версию пакета с официального сайта и запустите ее.

Как удалить Node.js и NPM

Node.js и NPM удаляются так же как и большинство программ в Windows. Т.е. Control Panel => Uninstall a program выбираем Node.js жмем правую кнопку мыши и выбираем Uninstall.

Пакеты Node.js

Так же на сайте NPM () перечислены все официальные пакеты Node.js.

  • Перевод

npm - это пакетный менеджер node.js . С его помощью можно управлять модулями и зависимостями.
Небольшая шпаргалка всех моих любимых команд npm:

Установка npm

Обновление npm

Есть несколько способов чтобы обновить npm. Я предпочитаю:
curl https://npmjs.org/install.sh | sh
или
npm install npm -g

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

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

Просмотр информации о пакете

npm view hook.io

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

Для демонстрации возьмём пакет http-server.
http-server is a package we"ve written which provides an easy to use wrapper around node"s core http.Server class. This module makes for a good example, since it"s API provides both a CLI binary and a requirable node.js module.
http-server - пакет, который мы написали, предоставляет более простой интерфейс в использовании базового модуля http.Server из node.js. Этот модуль хороший пример использования API как для бинарного CLI, так и для подключаемого модуля node.js.
npm install http-server
Так мы установим http-server в нашей рабочей директории.
Вы увидите новую папку в node_modules. Сейчас можете не обращать на это внимание.

Установка пакета в наше приложение

mkdir mynewapp/ cd mynewapp npm install http-server touch test.js
test.js
var HTTPServer = require("http-server"); var httpServer = new HTTPServer({ root: "./public" }); httpServer.start();
запустим скрипт
node test.js
Обратите внимание, как мы делаем: require("http-server")? Что это за магия? (автор молодец)
http-server не является базовым модулем node.js. Этот пакет мы только что установили из npm. Node.js и npm взаимодействуют и автоматически подключают наши локальные модули из node_modules директории.

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

По умолчанию 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 [email protected]

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

Важно. В некоторых случаях будут патчи, форки или ветви, которые вы хотите использовать, но которые еще не были опубликованы в npm. К счастью исходные коды для большинства npm модулей также доступна на www.github.com
git clone git://github.com/nodeapps/http-server.git cd http-server/ npm link
Теперь наша клонированная версия http-server связана локально.

Связи любых пакетов локально

Если у вас есть отдельный каталог содержащий пакет npm, то можно создать локальную связь для него. Это удобно в ситуациях, когда мы не хотим опубликовать наш пакет в хранилище npm.
cd http-server/ npm link
На нашу локальную версию http-server создана «связана» для нашей локальной машины. (связь создаётся как «copy-paste», с начало нужно перейти в нужный катало и сделать «copy», потом перейти в нужный каталог и сделать «paste». Так вот сейчас мы изучили как делается «copy», а ниже будет про «paste» этого модуля)

Связи локальных пакетов для нескольких приложений

Как мы видели ранее npm устанавливает пакеты в локальный каталог по умолчанию. Так вот npm ссылка(связь) работает почти так же.
mkdir newapp/ cd newapp/ npm link http-server
Мы указываем, что теперь создали связь из http-server в наше новое приложение newapp. Если бы мы не выполнили npm link http-server, то получили бы ошибку об отсутствующем модуле. (а вот наш и «paste» о чём я писал выше, теперь вам должна быть понятна логика создания связей)

Отмена связи между пакетами приложения

cd newapp/ npm unlink http-server
(здесь мы просто отменяем наш «paste» для этого приложения)