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

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

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

Перейдите на страницу загрузки Node.js и скачайте нужную версию. Доступны установщики для Windows и Mac, а также предварительно скомпилированные двоичные файлы и исходный код Linux. Для Linux вы также можете установить Node через менеджер пакетов, как описано здесь.

Для этого урока мы будем использовать стабильную версию 5.7.0.

Давайте посмотрим, где был установлен узел, и проверим версию.

$ 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

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

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

Упакованные модули узла

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

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

Посмотрим, что выдает нам конфиг npm.

$ 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

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

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

С помощью этого простого изменения конфигурации мы изменили место установки глобальных пакетов Node. Это также создает файл .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). Мы используем глобальный флаг, но его можно сократить до -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]

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

Список глобальных пакетов

Первоначально опубликовано на www.laravelfeed.com.