npmパッケージを最初からGitHub Actionsでリリースする方法

筆者はeditpromptmdjanaiといったCLIをnpmで公開しています。手動でのリリースは面倒ですので GitHub Actionsでデプロイ してます。
npmのパッケージ公開をGitHub Actionsでやるならトークン無しのTrusted publishingがおすすめですが、これは 一度公開したnpmパッケージじゃないと使えません

この問題を解決できるツールsetup-npm-trusted-publishを見つけて使ってみたらよかったので解説します。

※Trusted publishingについては別の記事に書きました。

setup-npm-trusted-publishとは

setup-npm-trusted-publishはnpmパッケージの初回公開用CLIです。

流れを見たほうが理解しやすいです。

流れ

  • まだnpmにパッケージを作っていない状態でsetup-npm-trusted-publishを実行する
  • package.jsonREADME.mdだけ」のnpmパッケージが公開される
  • 手動でTrusted publishingを設定する
  • (pushとかして)CI/CDで公開される

つまりsetup-npm-trusted-publishは「コード無しの最低限の内容でnpmパッケージを作ってくれる」ツールです。

実際に公開される内容

もう少し具体的に書きます。生成されるのは次の内容です。

  • バージョン:0.0.1
  • ファイル
    • package.json
    • README.md
package.json
{
"name": "指定したパッケージ名",
"version": "0.0.1",
"description": "OIDC trusted publishing setup package for 指定したパッケージ名",
"keywords": [
"oidc",
"trusted-publishing",
"setup"
]
}
setup-npm-trusted-publish実行直後のnpmパッケージの状態

どうしてもその状態を見てみたいという方はmdjanaiのversionsから0.0.1を探してください。使えないバージョンなのでここで直接リンクを貼ることは避けます。

使い方

さきほど流れは書きましたが、もう少し具体的に使い方を書きます。

コードは準備しておく

setup-npm-trusted-publishはコードの状態に関係なくパッケージを作成できます。が、コードが空の状態でずっとパッケージを公開するのはよくないため、実際に公開する用のコードはこの時点で用意しておきましょう。

npmログイン

npmアカウントでログインします。

Terminal window
npm login
npm whoami

いったんdry run

dry runもできます。パッケージの公開作業って緊張するのでありがたいですね。

Terminal window
npx setup-npm-trusted-publish パッケージ名 --dry-run
📦 Creating placeholder package: mdjanai
📁 Temp directory: /var/folders/dp/458bj8f57_1d0nwbcjgp9hnc0000gn/T/npm-oidc-setup-ef05eebf955dfb50
✅ Created placeholder package files
🔍 Dry run mode - package created but not published
📁 Package location: /var/folders/dp/458bj8f57_1d0nwbcjgp9hnc0000gn/T/npm-oidc-setup-ef05eebf955dfb50
To publish manually:
cd /var/folders/dp/458bj8f57_1d0nwbcjgp9hnc0000gn/T/npm-oidc-setup-ef05eebf955dfb50
npm publish

実際に空パッケージを公開

では--dry-runを外して実行しましょう。

Terminal window
npx setup-npm-trusted-publish パッケージ名
📦 Creating placeholder package: mdjanai
📁 Temp directory: /var/folders/dp/458bj8f57_1d0nwbcjgp9hnc0000gn/T/npm-oidc-setup-29a5c5a6c2ce0276
✅ Created placeholder package files
📤 Publishing package to npm...
npm notice
npm notice 📦 mdjanai@0.0.1
npm notice Tarball Contents
npm notice 1.8kB README.md
npm notice 187B package.json
npm notice Tarball Details
npm notice name: mdjanai
npm notice version: 0.0.1
npm notice filename: mdjanai-0.0.1.tgz
npm notice package size: 1.1 kB
npm notice unpacked size: 2.0 kB
npm notice shasum: 66dcb4c5a9c6787efca435982d7267e4ba3fd2b2
npm notice integrity: sha512-OTAW66twh4IVr[...]FiPHEXWmkco6Q==
npm notice total files: 2
npm notice
npm notice Publishing to https://registry.npmjs.org/ with tag latest and default access
Authenticate your account at:
https://www.npmjs.com/auth/cli/211c8e00-b2f2-40b4-90f5-0d99e25f764c
Press ENTER to open in the browser...
+ mdjanai@0.0.1
✅ Successfully published: mdjanai
🔗 View your package at: https://www.npmjs.com/package/mdjanai
Next steps:
1. Go to https://www.npmjs.com/package/mdjanai/access
2. Configure OIDC trusted publishing
3. Set up your CI/CD workflow to publish with OIDC
🧹 Cleaned up temp directory

Successfully publishedのようないかにも成功した感のあるメッセージが出れば成功です。

ログインしてないと失敗する

前述のとおりログインが必要です。ログインしてないと次のように失敗します。

npm error code ENEEDAUTH
npm error need auth This command requires you to be logged in to https://registry.npmjs.org/
npm error need auth You need to authorize this machine using `npm adduser`
npm error A complete log of this run can be found in: /Users/eetann/.npm/_logs/2025-11-23T07_57_49_922Z-debug-0.log
❌ Failed to publish package
Error: Command failed: npm publish
📁 Package files are still available at: /var/folders/dp/458bj8f57_1d0nwbcjgp9hnc0000gn/T/npm-oidc-setup-47c4ec599ced657d
You can try publishing manually:
cd /var/folders/dp/458bj8f57_1d0nwbcjgp9hnc0000gn/T/npm-oidc-setup-47c4ec599ced657d
npm publish

OIDCの設定

実行結果のURLからアクセスし、Next stepsに従ってOIDCを設定しましょう。
なおOIDC関係については別の記事で詳しく解説しています。

ワークフローを実行

OIDCの設定が終わったら待ちに待ったワークフローの実行です。


以上、setup-npm-trusted-publishを使ったCI前のパッケージ生成でした。