NodeJS 速習チュートリアル

Node.js パッケージの公開

1. パッケージを公開するとはどういうことか?

パッケージを公開(パブリッシュ)するとは、作成した Node.js のモジュールやプロジェクトを npm レジストリ に登録し、他の開発者がインストールして利用できる状態にすることを指します。

これは、オープンソースのライブラリやツールを Node.js コミュニティと共有するための主要な方法です。パッケージを公開すると、誰でも npm install your-package-name を実行してあなたのコードを利用できるようになります。

注意点: パッケージを公開する際は、それが他のユーザーにとって価値があるものであること、また既存の npm パッケージと重複していないことを確認してください。

2. パッケージの準備

2.1 パッケージの初期化

新しいディレクトリを作成し、パッケージを初期化します。

# ディレクトリの作成
mkdir my-package
# ディレクトリへの移動
cd my-package
# デフォルト設定で package.json を生成
npm init -y

2.2 必須ファイル

パッケージには以下の主要なファイルを含める必要があります。

  • package.json:パッケージのメタデータ
  • README.md:ドキュメンテーション(Markdown 形式)
  • index.js:メインのエントリーポイント(または package.json で指定したファイル)
  • LICENSE:利用規約(MIT、ISC など)
  • .gitignore:node_modules やログファイルを Git から除外するため
  • .npmignore:任意。公開するパッケージに含めないファイルを除外するため

2.3 package.json の基本設定

package.json に少なくとも以下のフィールドが含まれていることを確認してください。

{
  "name": "your-package-name",
  "version": "1.0.0",
  "description": "パッケージの簡単な説明文",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": ["キーワード1", "キーワード2"],
  "author": "あなたの名前 <[email protected]>",
  "license": "MIT"
}

3. npm アカウントの作成

3.1 サインアップ

アカウントを持っていない場合は、 https://www.npmjs.com/signup  で作成してください。

3.2 メールの認証

パブリッシュする前に、届いたメールを確認してアカウントの有効化(ベリファイ)を完了させてください。

3.3 CLI からのログイン

ターミナルを開き、以下のコマンドを実行します。

npm login

以下の情報の入力を求められます:

  • ユーザー名(Username)
  • パスワード(Password)
  • メールアドレス(Email:npm アカウントと一致している必要があります)
  • ワンタイムパスワード(2FA(二要素認証)を有効にしている場合)

3.4 ログイン状態の確認

npm whoami

4. パッケージの公開

4.1 名前の空き状況を確認

npm view <package-name>

その名前のパッケージが存在しなければ、その名前を使用できます。既に存在する場合は、package.json で別の名前を選択する必要があります。

4.2 ローカルでのテスト

公開する前に、ローカル環境でパッケージをテストします。

# パッケージのディレクトリ内で実行
npm link

# 別のプロジェクトディレクトリに移動して実行
npm link <package-name>

4.3 npm レジストリへのパブリッシュ

# 正しいディレクトリにいることを確認
cd path/to/your/package

# パブリックな npm レジストリに公開
npm publish

4.4 特定のタグを指定して公開

npm publish --tag beta

4.4 パブリックパッケージとして公開(npm 有料アカウント利用時)

npm publish --access public

5. パッケージのアップデート

5.1 バージョン番号の更新

セマンティックバージョニング(SemVer) に従ってバージョンを更新します。

# パッチリリース(バグ修正など)
npm version patch

# マイナーリリース(後方互換性のある機能追加)
npm version minor

# メジャーリリース(互換性のない変更/破壊的変更)
npm version major

5.2 変更履歴(Changelog)の更新

CHANGELOG.md を更新し、このバージョンでの変更点を記録します。

5.3 アップデートのパブリッシュ

npm publish

5.4 リリースタグの作成(任意)

Git を使用している場合は、リリースタグを作成します。

git tag -a v1.0.0 -m "初期リリース"
git push origin v1.0.0

6. 公開済みパッケージの管理

6.1 パッケージの公開取り消し(Unpublishing)

npm レジストリからパッケージを削除する場合:

# 特定のバージョンを削除
npm unpublish <package-name>@<version>

# パッケージ全体を削除(公開から72時間以内のみ可能)
npm unpublish <package-name> --force

重要: 公開の取り消しは、そのパッケージに依存している他のプロジェクトを壊す可能性があるため、強く推奨されません。代わりに npm deprecate の使用を検討してください。

6.2 パッケージの非推奨化(Deprecating)

特定のバージョンのインストールを防ぎつつ、既存ユーザーが引き続き利用できるようにする場合:

# 特定のバージョンを非推奨にする
npm deprecate <package-name>@<version> "メッセージ"

# 例
npx deprecate [email protected] "このバージョンはメンテナンスされていません。v2.0.0 へのアップグレードをお願いします。"

6.3 所有権の譲渡

パッケージを他のユーザーや組織に移管する場合:

npm owner add <username> <package-name>

7. ベストプラクティス

  • セマンティックバージョニングの遵守:MAJOR.MINOR.PATCH を適切に使い分けましょう。
  • 質の高いドキュメントを作成:README に明確な使用例を記載してください。
  • テストの追加:ユニットテストを含め、実行方法を明記しましょう。
  • .npmignore の活用:必要なファイルのみをパブリッシュするように設定します。
  • キーワードの設定:他のユーザーがパッケージを見つけやすくなるようキーワードを追加しましょう。
  • 適切なライセンスの選択:利用規約を明確にします。
  • 変更履歴の維持:バージョン間の変更内容を記録します。
  • 継続的インテグレーション(CI)の導入:テストとパブリッシュを自動化しましょう。

8. まとめ

npm へのパッケージ公開は、自分のコードを Node.js コミュニティと共有する素晴らしい方法です。ベストプラクティスに従い、適切にメンテナンスを行うことで、他の開発者が活用できる価値あるツールを提供できます。

最後に: 「大いなる力には、大いなる責任が伴います」。パッケージを公開するということは、それをメンテナンスし続けるか、あるいはそのステータスをユーザーに明確に伝えるというコミットメントをすることなのです。