Создание npm-пакета



Типичная ситуация — в проекте существует некий модуль. Модуль развивается, становится самостоятельным элементом и копируется в другой проект. Потом еще один проект. И еще.
В каждом проекте модуль обновляется и улучшается, и, в какой-то момент, становится не понятно, где актуальная версия. Да ладно, «не понятно где актуальная версия»! Вполне возможно, что в каждом проекте у модуля будут свои модификации, в которые будет достаточно сложно привести в порядок для использования в следующем проекте.
Вполне можно ограничиться созданием отдельного репозитория для модуля, например на 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-пакетов — это не панацея, и вполне вероятно, что это подойдет далеко не всем, но я бы назвал это «еще одним путем к модульности».
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 4

    +8
    Ну может кто не знал.
    npm позволяет указывать в качестве источника ссылки на архивы
    а еще у гитхаба и битбакеты можно скачивать архивы исходников
    Соеденив этих два знания получаем такой трюк.
    Если не хочется выкладывать свою библиотеку в npm, то достаточно в файле package.json в зависимостях подключить модуль так:
    "dependencies": {
       ...
       "<имя модуля>": "<путь к репозиторию>/tarball/<ветка или тег>"
       ...
    }
    


    например так:
    "dependencies": {
       "node-lib": "https://github.com/zxcabs/node-lib/tarball/v.0.0.2"
    }
    
      +2
      Можно сразу указыать репозиторий и хэш с именем ветки, тэга или всего чего угодно, что можно передать в качестве аргумента команде git checkout. Например, так:

      «dependencies»: {
      «connect»: «git://github.com/senchalabs/connect.git#2.7.5»
      }

      +1
      То же самое для экосистемы RubyGems: habrahabr.ru/post/138582/
        0
        Для создания package.json обычно использую npm init.
        Также бывает полезна команда npm version.
        Только что узнал про bash completion.

        Only users with full accounts can post comments. Log in, please.