Использование npm для создания и публикации пакетов Node.js на сервере Linux

Node.js – это платформа Javascript для серверного программирования, которая позволяет быстро разрабатывать и запускать сетевые приложения.

Данное руководство охватывает использование npm, менеджера пакетов Node.js. Чтобы получить дополнительную информацию по работе с Node.js, читайте предыдущие руководства:

Эта статья рассказывает о том, как изменить параметры конфигураций, создать и опубликовать пакет, как взаимодействовать с репозиториями пакетов npm.

Управление параметрами конфигураций

Поведение npm можно контролировать благодаря его гибким настройкам. Для этого в npm существует немало встроенных способов.

Листинг текущих настроек

Для начала необходимо просмотреть текущие настройки. Для этого наберите:

npm config ls
; cli configs
registry = "https://registry.npmjs.org/"
user-agent = "npm/1.4.9 node/v0.11.13 linux x64"
; node bin location = /home/demouser/.nvm/v0.11.13/bin/node
; cwd = /home/demouser/projects/test_package
; HOME = /home/demouser
; 'npm config ls -l' to show all defaults.

Данный список содержит информацию из множества различных мест системы, в том числе текущей операционной среды, и составляется при запуске команды. Для проверки можно внести флаг -g; это действие сообщит, что опция “global” установлена:

npm config ls -g
; cli configs
global = true
registry = "https://registry.npmjs.org/"
user-agent = "npm/1.4.9 node/v0.11.13 linux x64"
. . .

На данный момент npm не выводит данных из конфигурационных файлов, потому что у него пока что нет никаких конфигурационных файлов. Потому npm просто собирает информацию из среды (текущего каталога и т.д.) и настройки приложений по умолчанию.

Тем не менее, здесь выведены далеко не все данные по умолчанию. Чтобы получить более развернутый вывод, внесите флаг -l:

npm config ls -l
; cli configs
long = true
registry = "https://registry.npmjs.org/"
user-agent = "npm/1.4.9 node/v0.11.13 linux x64"
; default values
always-auth = false
bin-links = true
browser = null
ca = null
. . .

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

Как видите, npm выводит множество пар “ключ – значение”, что может значительно облегчить работу. Например, чтобы узнать, какой текстовый редактор установлен по умолчанию, нужно найти текущее значение ключа editor; для этого введите:

npm config get editor
vi

Чтобы изменить данное значение, можно просто набрать:

npm config set editor vim

Эта строка выполнит два действия: заменит значение vi новым значением vim, а также создаст конфигурационный файл (поскольку это первое пользовательское значение).

Где находится этот файл? Спросите у npm:

npm config get userconfig
/home/demouser/.npmrc

Если для внесения значений использовать синтаксис config set -g, они будут внесены в файл globalconfig. Чтобы узнать, где он находится, введите:

npm config get globalconfig
/home/demouser/.nvm/v0.11.13/etc/npmrc

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

Чтобы отредактировать конфигурационный файл, наберите:

npm config edit

Эта команда не сработает, если файл не был создан (вручную или после изменения значений по умолчанию).

Кроме того, можно установить индивидуальные параметры конфигурации для конкретной команды с помощью следующего синтаксиса:

npm подкоманда --ключ значение

Также значения извлекаются из файла package.json, который содержит параметры среды и самого проекта.

Создание пакета с помощью npm

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

Прежде всего, npm может создать для проекта файл package.json. Для начала обратитесь к справке, чтобы ознакомиться с полями, которые нужно будет заполнить:

npm help json

Теперь перейдите в каталог приложения:

cd ~/projects/test_package
npm init

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

name: (test_package)
version: (0.0.0) 0.0.1
description: A test package
entry point: (index.js) index.js
test command: echo "test"
git repository: http://fake.git.repo.com
keywords: test
author: me
license: (ISC) GLP

Чтобы записать /home/demouser/projects/test_package/package.json:

{
"name": "test_package",
"version": "0.0.1",
"description": "A test package",
"main": "index.js",
"dependencies": {
"express": "^4.2.0"
},
"devDependencies": {},
"scripts": {
"test": "echo \"test\""
},
"keywords": [
"test"
],
"author": "me",
"license": "GLP"
}
Is this ok? (yes) yes

При необходимости установить дополнительные зависимости после создания файла package.json используйте флаг –save, который обновит список зависимостей в файле package.json.

Если пакет нуждается в определенных версиях программ, используйте субкоманду shrinkwrap. Как правило, файл package.json устанавливает минимальные жизнеспособные версии пакетов, необходимых для сборки приложения, а в файле shrinkwrap эти версии индивидуальны и заблокированы.

Чтобы создать этот файл, введите:

npm shrinkwrap

Это создаст файл под названием npm-shrinkwrap.json, содержащий подробную информацию по каждой зависимости. Этот инструмент очень важен в случае с чувствительной средой.

Взаимодействие с сайтом npm

Проект npm поддерживает вебсайт пакетов, с которым можно взаимодействовать при помощи командной строки npm.

Итак, для начала нужно создать учетную запись, что можно сделать в интерфейсе npm, набрав:

npm adduser

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

Просмотрев конфигурации, можно увидеть подробности нового аккаунта:

npm config ls
. . .
; userconfig /home/demouser/.npmrc
editor = "vim"
email = "demouser@domain.com"
username = "demouser"
. . .

Публикация пакета

При желании поделиться пакетом с сообществом Node.js начните с сайта npm, который обладает вспомогательными функциями.

Перейдите в каталог приложения и наберите:

npm publish

Это толкнет пакет на сайт npm. Успех данной операции зависит от имени и версии пакета (они должны быть уникальны). Когда файл будет выгружен на сайт, его можно будет найти в списке остальных пакетов Node.js.

Пометка загрузок

Определенные релизы пакетов можно пометить с помощью субкоманды tag. Эти теги могут быть использованы вместо номера версии во время установки и в характеристиках зависимостей.

По умолчанию npm помечает любой опубликованный пакет тегом “latest”. Этот тег помогает найти последние загруженные пакеты. Наберите:

npm config get tag
latest

Это значит, последние версии пакета можно запрашивать так:

npm install пакет@latest

Чтобы внести дополнительный тег для комбинации “пакет/версия”, наберите:

npm tag пакет@версия имя_тега

Это позволит ссылаться на версию по указанному тегу, а не по номеру версии.

Изменение прав на пакеты

Пользователь, публикующий пакеты, по умолчанию становится владельцем опубликованных ним пакетов.

Чтобы в этом убедиться, введите:

npm owner ls имя_пакета
demouser <demouser@domain.com>

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

npm owner add имя_пользователя

Чтобы отнять права на проект, наберите:

npm owner rm имя_пользователя

Удаление и объявление пакетов устаревшими

Когда появляется новая, улучшенная версия пакета, ранние его версии объявляют устаревшими (например, предыдущая версия имеет некоторые уязвимости).

С помощью npm объявить пакет (или диапазон пакетов) устаревшим очень просто; для этого наберите:

npm deprecate имя_пакета@"сообщение_для_пользователей"

Введенное сообщение будет отображаться как предупреждение для всех пользователей, установивших данные пакеты.

Чтобы удалить пакет, используйте команду unpublish. Вероятно, лучше не делать этого, если данный пакет был уже установлен другими пользователями. Также можно отменить публикацию определенной версии; вместо вышеописанных действий npm рекомендует объявлять пакет устаревшим.

Обратите внимание: даже если пакет был удален или снят с публикации, его комбинацию “имя/версия” нельзя использовать снова. Это сделано для того, чтобы пользователи не могли по ошибке установить неправильный пакет.

Синтаксис снятия пакета с публикации:

npm unpublish имя_пакета@версия

Чтобы удалить пакет полностью, не указывайте версию. Чтобы случайно не удалить проект полностью, внесите флаг –force:

npm unpublish --force имя_пакета

Итоги

Данное руководство дает довольно углубленное представление о том, как использовать возможности npm в разработке проектов Node.js. Утилита npm может быть полезна во многих областях разработки: от создания файлов и скачивания зависимостей проекта до публикации пакетов и развертывания среды производства.

Tags: , , , ,

Добавить комментарий