npmパッケージを最初からGitHub Actionsでリリースする方法
筆者はeditpromptやmdjanaiといった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.jsonとREADME.mdだけ」のnpmパッケージが公開される - 手動でTrusted publishingを設定する
- (pushとかして)CI/CDで公開される
つまりsetup-npm-trusted-publishは「コード無しの最低限の内容でnpmパッケージを作ってくれる」ツールです。
実際に公開される内容
もう少し具体的に書きます。生成されるのは次の内容です。
- バージョン:
0.0.1 - ファイル
package.jsonREADME.md
{ "name": "指定したパッケージ名", "version": "0.0.1", "description": "OIDC trusted publishing setup package for 指定したパッケージ名", "keywords": [ "oidc", "trusted-publishing", "setup" ]}
どうしてもその状態を見てみたいという方はmdjanaiのversionsから0.0.1を探してください。使えないバージョンなのでここで直接リンクを貼ることは避けます。
使い方
さきほど流れは書きましたが、もう少し具体的に使い方を書きます。
コードは準備しておく
setup-npm-trusted-publishはコードの状態に関係なくパッケージを作成できます。が、コードが空の状態でずっとパッケージを公開するのはよくないため、実際に公開する用のコードはこの時点で用意しておきましょう。
npmログイン
npmアカウントでログインします。
npm loginnpm whoamiいったんdry run
dry runもできます。パッケージの公開作業って緊張するのでありがたいですね。
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-ef05eebf955dfb50npm publish実際に空パッケージを公開
では--dry-runを外して実行しましょう。
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 noticenpm notice 📦 mdjanai@0.0.1npm notice Tarball Contentsnpm notice 1.8kB README.mdnpm notice 187B package.jsonnpm notice Tarball Detailsnpm notice name: mdjanainpm notice version: 0.0.1npm notice filename: mdjanai-0.0.1.tgznpm notice package size: 1.1 kBnpm notice unpacked size: 2.0 kBnpm notice shasum: 66dcb4c5a9c6787efca435982d7267e4ba3fd2b2npm notice integrity: sha512-OTAW66twh4IVr[...]FiPHEXWmkco6Q==npm notice total files: 2npm noticenpm notice Publishing to https://registry.npmjs.org/ with tag latest and default accessAuthenticate your account at:https://www.npmjs.com/auth/cli/211c8e00-b2f2-40b4-90f5-0d99e25f764cPress 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/access2. Configure OIDC trusted publishing3. Set up your CI/CD workflow to publish with OIDC
🧹 Cleaned up temp directorySuccessfully publishedのようないかにも成功した感のあるメッセージが出れば成功です。
ログインしてないと失敗する
前述のとおりログインが必要です。ログインしてないと次のように失敗します。
npm error code ENEEDAUTHnpm 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 packageError: Command failed: npm publish
📁 Package files are still available at: /var/folders/dp/458bj8f57_1d0nwbcjgp9hnc0000gn/T/npm-oidc-setup-47c4ec599ced657dYou can try publishing manually: cd /var/folders/dp/458bj8f57_1d0nwbcjgp9hnc0000gn/T/npm-oidc-setup-47c4ec599ced657d npm publishOIDCの設定
実行結果のURLからアクセスし、Next stepsに従ってOIDCを設定しましょう。
なおOIDC関係については別の記事で詳しく解説しています。
ワークフローを実行
OIDCの設定が終わったら待ちに待ったワークフローの実行です。
以上、setup-npm-trusted-publishを使ったCI前のパッケージ生成でした。