Типичная ситуация — в проекте существует некий модуль. Модуль развивается, становится самостоятельным элементом и копируется в другой проект. Потом еще один проект. И еще.
В каждом проекте модуль обновляется и улучшается, и, в какой-то момент, становится не понятно, где актуальная версия. Да ладно, «не понятно где актуальная версия»! Вполне возможно, что в каждом проекте у модуля будут свои модификации, в которые будет достаточно сложно привести в порядок для использования в следующем проекте.
Вполне можно ограничиться созданием отдельного репозитория для модуля, например на GitHub или Bitbucket. Но добавлять репозиторий как субмодуль для GIT — это путь к приключениям.
Но можно пойти дальше, и создать на основе такого модуля npm-пакет. Работать с такими пакетами очень просто. Установить npm-пакет можно с помощью команды
npm install
, а обновить с помощью npm update
.Создание пакета
Создавать npm-пакеты совсем не сложно. Ниже я кратко опишу моменты, с которыми я столкнулся, во время публикации своего первого модуля.
Файловая структура
Файловая структура может быть совершенно разной. Вполне разумно использовать для создания ФС модуля grunt-init и grunt-init-node.
Репозиторий на GitHub или Bitbucket
Вполне логично (но не обязательно) будет создать репозиторий на GitHub или Bitbucket.
Плюсы:
- Баг-трекер для хранения ошибок с которыми столкнулись пользователи, и, возможно, их решений
- Можно получить полезный pull request
Package.json
Для того, что бы опубликовать модуль, нужно правильно заполнить package.json. О том, как это сделать подробно написано в документации к npm, либо более интерактивно здесь.
Публикация в npm
Для того, что бы опубликовать пакет — нужно авторизоваться в npm. Если вы еще не зарегистрированы:
npm adduser
После этого нужно будет ввести имя пользователя, пароль и email. После регистрации, npm авторизует вас под созданной учетной записью.
В случае, если вы уже были зарегистрированы в npm раньше — вам нужно авторизоваться,
npm login
Теперь можно опубликовать пакет, набрав в консоли:
npm publish
После того, как пакет опубликован — его можно установить с помощью команды
npm install
Для удаления пакета из npm существует команда:
npm unpublish <project>[@<version>]
PS
Конечно, создание npm-пакетов — это не панацея, и вполне вероятно, что это подойдет далеко не всем, но я бы назвал это «еще одним путем к модульности».