npmパッケージ公開手順の備忘録
npmデベロッパー登録
まずはこちらのサイトでnpmデベロッパーの登録を行います。
https://www.npmjs.com/signup
必須な入力項目は下記3つです。
- Public Email
- Username
- Password
Usernameですが、"https://www.npmjs.com/~username" というURLになるので後悔のないユーザ名にしましょう。
"Sign up for the npm Weekly" という項目は、npm Weekly というnpmの最新情報を流してくれるメールマガジンに登録するかどうかなので、最新動向に興味があればチェックします。
npmrc作成
作成したデベロッパーアカウントの権限でnpmレジストリにアクセスするためのtoken情報を持つ ~/.npmrc を作成します。
% npm adduser Username: npmデベロッパーサイトで入力したUsername Password: npmデベロッパーサイトで入力したPassword Email: (this IS public) npmデベロッパーサイトで入力したPublic Email Logged in as kitakitabauer on https://registry.npmjs.org/.
Git/GitHubリポジトリの準備
npmパッケージの公開元になるソース管理をGit/GitHubで行います。
ここで注意が必要なのですが、npmでは大文字が使えないので、名称を合わせたい場合はリポジトリ名に気をつけてください。
package.json作成
Gitリポジトリをnpm管理下とするためにpackage.jsonを作成します。
npm initで作成しても、ファイルを直接用意してもかまいません。
ここで記述した内容がサイトにも公開されるので、情報に間違いのないように注意します。
{ "name": "パッケージ名", "version": "バージョン。はじめは0.0.1とか1.0.0で始めるのが定石", "description": "パッケージの処理概要", "main": "パッケージで最初に呼ばれるモジュールID", … "keywords": [ "npm searchで表示される検索キーワード", … ], "homepage": "プロジェクトのホームページ", "author": "作者名", "license": "ライセンスの種類" }
それぞれの項目の意味や書き方は、こちらの公式ドキュメントを見れば明快です。
npm package.json 日本語版 取扱説明書
ここでも1点注意が必要なのですが、既に公開済のパッケージと同じ名前にすることはできないので、事前にnpmサイトで検索して使われていないことを確認してください。
パッケージの中身を作成・コミット
公開したいパッケージの中身を実装します。
尚、README.mdにnpmのバージョンを表示させたい場合は、下記のようなバッジサービスを利用してURLを取得します。
badge.fury.io
npmのバージョンを上げても、下記のような書き方にしておけばREADME上のバッジもしばらく後に反映されます。(おそらくCDNのキャッシュによる遅延かと思われます)
[![npm version](https://badge.fury.io/js/check-ec2-event.svg)](https://badge.fury.io/js/check-ec2-event)
npmパッケージのバージョンアップ
npm version コマンドで、下記一連の流れを行ってくれます。
- package.jsonの "version" を更新してコミット
- gitのtagも同じバージョンで作成
コマンドの最後に指定するバージョンはセマンティックバージョニングに準拠しています。
$ npm version (major|minor|patch)
コマンド実行後、忘れずにGitHubにもタグ毎pushしておきます。
$ git push origin master --tags
パッケージ公開
ついに外部公開します。
npm publish コマンドでパブリックに公開します。
$ npm publish + check-ec2-event@0.0.1
確認
公開したパッケージがnpmレジストリで確認できたらOKです。
npm installも成功することを確認して完了です。
% npm i check-ec2-event /private/tmp └─┬ check-ec2-event@0.0.8 …
おわりに
とても簡単に公開できるので、便利なツールは世界中の人にどんどん触ってもらってブラッシュアップしましょう。
おしまい。