最終更新: 2026-06-18。rpgdev は 2026-06-05 に npm 初公開済み(v0.1.0)。 ここに書いてあるのは「次回以降どう publish するか」と「初回でハマった罠(再発防止のための記録)」。
パッケージは既に npm に存在するので、更新は トークンで publish できる(初回のような OTP は不要)。
⚠ 訂正(2026-06-07 解決):Claude(自動)から publish するには、実際には classic Automation トークン + パッケージ側
Publishing access = Require two-factor authentication or automation tokens(mfa=automation) の 両方が必要だった。granular トークンや 2FA 無効化では通らない。~/.npmrcに classic automation トークンを入れた状態でnpm whoamiが通れば OK(granular だと 401 になる)。以下の granular 記述は初期の試行錯誤の記録として残す。
- バージョンを上げる(
package.jsonのversion)。pre-1.0 なので、モデル変更など大きいものは minor(0.1.0 → 0.2.0)、小修正は patch。npm version patch|minorでもよい(git タグも自動で作る)。 - テスト:
npm test - 公開内容の確認(任意):
npm pack --dry-run(認証不要、同梱ファイル一覧が出る) - 公開:
npm publish --access public- 認証は
~/.npmrcの//registry.npmjs.org/:_authToken=<トークン>を使う。 - Claude に実行させる場合、
.claude/settings.local.jsonのpermissions.allowにBash(npm publish:*)が必要(.claude/は gitignore 対象なので、無ければ足す)。これが無いと auto-mode 分類器が publish をブロックする。
- 認証は
- 確認:
npm view rpgdev version
⚠ 公開後に Windows のグローバルを更新するときは Windows の作業ディレクトリから。 挙動確認のため
npm i -g rpgdev@<ver>を Windows 側でも更新するが、powershell.exe npm i -gを WSL から叩くと cwd が\\wsl.localhost\...の UNC になり、Windows の npm が WSL 側の~/.npmrc(Linux 用prefix)を project config として読み込んでprefix cannot be changed from project configで失敗する(404 として表面化して紛らわしい)。 必ず Windows のパスから実行する:powershell.exe -Command 'Set-Location $env:USERPROFILE; npm i -g rpgdev@<ver>'。 WSL 側のグローバルは WSL から普通にnpm i -gでよい(両方更新が要る=Windows ネイティブと WSL2 で別グローバル)。
⚠ ハブ稼働中の
npm i -gは EBUSY で失敗する。 実行中のハブがグローバル配下のファイルを掴んでいるため、 更新前に他セッションを止めてハブを shutdown してから両側を更新する(片側だけ更新して放置すると split-brain になる。対処手順は 02_windows-wsl.md の split-brain 節)。
csc.exeexit 1 の無害判定: 更新後の初回起動で窓ビルド(csc.exe)が exit 1 を返しても、 ①%LOCALAPPDATA%\rpgdev\hubの.rpgdev-deployed-versionマーカが新版になっている、かつ ②該当リリースの変更が C# ソースに触れていない(コード grep で確認)なら、既存 exe の再利用で実害なし。 この2条件を確認せずに「ビルド失敗=リリース失敗」と誤診しないこと。
- granular access token(bypass 2FA 有効) を使う。npmjs.com → Access Tokens → Granular → 「Bypass 2FA」を ON、Packages は rpgdev に Read and write。
- npmjs.com → rpgdev → Settings → Publishing access を 「Require two-factor authentication or granular access token with bypass 2FA」 にしておく(トークン publish を許可する設定)。
~/.npmrcへの設定は、トークンを履歴・チャット・ログに残さないやり方で:→ 何も表示されない状態でread -rs TOK && npm config set //registry.npmjs.org/:_authToken="$TOK" && unset TOK
npm_で始まる本体だけ を貼る。- ⚠ npmjs サイトからコピーするとトークンの「名前/ラベル」まで一緒にコピーしがち。ラベル混入だと
Bearer <ラベル> npm_xxx is not a legal HTTP header valueで失敗する。値だけにする。
- ⚠ npmjs サイトからコピーするとトークンの「名前/ラベル」まで一緒にコピーしがち。ラベル混入だと
新規パッケージの初回 publish だけは特殊で、ここでハマった:
- npm の granular access token は「まだ存在しないパッケージ」を作成できない。
初回 publish は
PUT https://registry.npmjs.org/rpgdevが 404(could not be found or you do not have permission)になる。npm whoamiも granular トークンだと 401(これは granular の正常挙動。トークンが壊れているわけではない)。 - Classic automation token なら新規作成できるが、npm が Classic トークンを廃止中。
- → 初回(新規パッケージの箱作り)だけは、対話
npm login+ OTP で publish する必要があった。npm login npm publish --access public # OTP を入力 - 箱ができた今、この罠は再発しない。 2回目以降は上の「通常の更新」手順(トークンで OK)。
- 参考: npm/cli #5089、Classic token 廃止。
- パッケージサイズは約 89MB(2026-06-15・v0.5.6 時点の
npm pack --dry-runで 89.3MB/76ファイル)。public/audio/*.wav(dungeon/castle BGM を含む7トラック)とpublic/assets/*.png(ステージ別モンスター)が主因。 精霊スプライトや再生成 BGM を追加した時はnpm pack --dry-runで同梱サイズを確認する。軽量化するなら別バージョンで。 public/assets/sprites/の画像生成デバッグ/作業ファイルは同 dir の.gitignore許可リスト(採用スプライトだけ!で通す)で git・npm 双方から除外している。新しいスプライトを採用したら.gitignoreに!name.png行を足す(足さないと同梱されない)。AGENTS.mdはpackage.jsonのfilesに無いので npm には同梱されない(dev 用なので正しい)。- GitHub のタグと揃えるなら
git tag vX.Y.Z && git push origin vX.Y.Z。