Node и npm

Введение в Node

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

Мне особенно нравится эта цитата из статьи Томислава Капана «На кой чёрт я использую Node.js? Введение на примерах».

...стоит отметить, что Райан Дал, создатель Node.js, «вдохновлённый такими приложениями, как Gmail», был нацелен на создание сайтов с push-технологией, работающих в реальном времени. В Node.js он дал разработчикам инструмент, основанный на принципе асинхронного ввода-вывода.

Установка Node

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

$ node --version

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

Installing Node and npm — хорошая статья обо всех способах установки. Обратите внимание на Шаг 4, в котором высказываются некоторые довольно твёрдые убеждения об установке.

gist иллюстрирует ряд способов установки Node.

В статье выражается личное мнение против использования Homebrew. Homebrew работал у меня хорошо, но моё мнение может не совпадать с вашим.

Node Package Manager (npm)

npm — это менеджер пакетов Node.js. Как подразумевает название, вы можете использовать его для установки программ для Node. Кроме того, если вы применяете npm в разработке, то он упрощает определение зависимостей и связей между ними.

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

В зависимости от процесса установки, 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 содержит много особенностей. Чтобы узнать больше о том, как это всё работает, посетите интерактивный учебник по package.json — удивительный инструмент для обучения.

Поддержка зависимостей

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

По большей части вы, вероятно, не хотите этого делать. Система версий поддерживается через файл package.json и вам в действительности никогда не придётся обращаться к пакетам напрямую и редактировать код.

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

Чтобы защитить библиотеки от вашей системы контроля версий, добавьте следующие строки в файл .gitignore.

node_modules

Получение зависимостей

Файл package.json поддерживает зависимости вашего приложения и вам не надо коммитить зависимость в своё хранилище на Git. Тем, кто клонирует свой проект, требуется задать зависимости. Их установка очень простая:

$ npm install

После выполнения этой команды в консоли вы увидите загрузку пакетов из Интернета!

Автор: Дейл Санде
Последнее изменение: 27.02.2024