SetsunaStyleTokyo

99年生まれのゆとりZ世代

← 一覧に戻る

Node.jsの自作ライブラリをnpmレジストリに公開

公開日: 2026/03/04 / 更新日: 2026/03/04

マニアックな処理をnpmライブラリパッケージとしてネット上に保管しときたい衝動に駆られたのでそれをした。

まず、ブラウザから、

  1. アカウント作成: npmjs.com にアクセスし、ユーザー名、メールアドレス、パスワードを登録。届いたメールからアドレス認証を完了させる。
  2. 二段階認証(2FA)の有効化: パッケージ公開には2FAが必須だから、アカウント設定の「2FA」から生体認証(MacのTouch ID)を登録する。

アカウントができたらVS Codeの適当なディレクトリで、

npm init -y

を実行してpackage.jsonを生成。

そしたら、適当な実行ファイル(.jsしか無理, シバン必須)を作ってメインの処理を実装する。

#!/usr/bin/env node
console.log('おはようございます');

次に、package.jsonを調整する。

  • name: 全世界で通用するユニークなパッケージ名を設定する。
  • version: 初期バージョン(例:1.0.0)を設定(更新するときは数値を上げる必要あり)。
  • bin: npx 実行時のコマンド名と、実行対象のファイルを紐付ける。(キー名をパッケージ名と完全に一致させれば、実行時のコマンド指定が省略可能。)
{
  "name": "wake-up-in-the-morning",
  "version": "1.0.0",
  "bin": {
    "wake-up-in-the-morning": "index.js"
  },
  "license": "ISC"
}

これで完成。あとはターミナルからログインしてパブリッシュするだけ。

npm login

生体認証なりで2FAを突破したら、

npm publish

そしたら、また2FAをして、

+ wake-up-in-the-morning@1.0.0

みたいなのが表示されたら完了。

じゃあ実際に呼び出してみようと思ったらエラー

% npx wake-up-in-the-morning
Need to install the following packages:
wake-up-in-the-morning@1.0.0
Ok to proceed? (y) y

sh: wake-up-in-the-morning: command not found

原因は、index.jsがパッケージに入っていないというあり得ないミス。

速攻修正して、ルール通りpackage.jsonのバージョンを上げて再度 publish.

{
  "name": "wake-up-in-the-morning",
  "version": "1.0.1",
  "bin": {
    "wake-up-in-the-morning": "index.js"
  },
  "license": "ISC"
}

二度めの正直で実行。

% npx wake-up-in-the-morning
おはようございます

できた。これでいつでも好きな時に自作のライブラリを追加できる環境が整った。

例えば、バイブコーディング禁止のハッカソンがあったとして、あらかじめAIに作らせておいた膨大な処理を含んだ自分専用ライブラリを本番で呼び出すことで楽に実装できるかもしれない(楽しくはない)。素晴らしい。