release-it について
release-it はバージョン更新、変更履歴の生成、Git タグ作成、パッケージ公開などのリリース作業を自動化します。設定ファイルによるワークフロー定義をサポートし、npm、Git、複数のホスティングプラットフォームと統合します。
主な機能
- 01バージョン番号の自動更新と Git タグの作成
- 02プロジェクトの変更履歴ファイルの生成と更新
- 03npm およびその他のレジストリへのパッケージ公開
- 04プレリリース、ドライラン、カスタムフック対応
活用シーン
- 01オープンソースプロジェクトの定期的なリリースサイクルを効率化
- 02CI/CD パイプラインのバージョン管理と公開を自動化
- 03手動リリースプロセスのエラーとバージョン不一致を削減
インストール
OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。
インストール後にrelease-it --versionを実行して確認します。
コマンド例
よく使うコマンドを使う順に並べています。
詳細
Release It! 🚀
🚀 バージョン管理やパッケージ公開に関連するタスクを自動化する汎用 CLI ツールです。
- バージョンを更新します(例:
package.json) - Git のコミット、タグ付け、プッシュ
- フックを使って、任意のコマンド(テストやビルド)を実行します
- GitHub または GitLab でリリースを作成します
- 変更履歴を生成します
- npm に公開します
- プレリリースを管理します
- プラグインで拡張できます
- あらゆる CI/CD 環境からリリースできます
release-it は、バージョン管理や、柔軟な設定、強力なプラグインシステム、プロジェクトのテスト、ビルド、公開に必要な任意のコマンドを実行するフックを使って、さまざまな場所への公開に利用できます。
職場で release-it をお使いですか?よろしければスポンサーになってください!
インストール
release-it は汎用リリースツールですが、多くのプロジェクトでは npm パッケージ向けに使用されています。release-it をインストールするには、npm を使い、すぐに使い始められる最小限の設定を追加する方法をおすすめします。
npm init release-it
または、手動でインストールし、package.json に release スクリプトを追加します。
npm install -D release-it
{
"name": "my-package",
"version": "1.0.0",
"scripts": {
"release": "release-it"
},
"devDependencies": {
"release-it": "^21.0.0"
}
}
使い方
プロジェクトのルートから npm run または npx を使って release-it を実行します。
npm run release
npx release-it
新しいバージョンを選択するよう求められます。その後も、設定に応じて追加の確認が表示されます。
Yarn と pnpm
- Yarn をお使いですか?Yarn の npm セクションをご覧ください。
- pnpm をお使いですか?release-it-pnpmをご覧ください。
モノレポ
モノレポをお使いですか?こちらのモノレポのレシピをご覧ください。
グローバルインストール
上記のようにプロジェクトごとにインストールする方法をおすすめしますが、グローバルインストールにも対応しています。
- npm から:
npm install -g release-it - Homebrew から:
brew install release-it
コンテナー化
Release It! - Containerized を使うと、Node 環境を必要とせず、標準化されたコンテナーとして任意の環境で実行できます。ご協力いただいた Juan Carlos に感謝します!
動画、記事、使用例
興味深い外部リソースを以下にまとめています。
リストに追加したいものがあれば、プルリクエストを作成してください!
設定
release-it は、すぐに使える適切なデフォルト設定と、設定に使える豊富なオプションを備えています。多くのプロジェクトでは、プロジェクトのルートにある .release-it.json ファイルか、package.json の release-it プロパティを使用します。
.release-it.json の簡単な例を以下に示します。
{
"$schema": "https://unpkg.com/release-it@20/schema/release-it.json",
"git": {
"commitMessage": "chore: release v${version}"
},
"github": {
"release": true
}
}
→ 詳しくは設定をご覧ください。
対話モードと CI モード
デフォルトでは、release-it は対話モードで動作し、各タスクの実行前に確認できます。
--ci オプションを使うと、プロンプトなしで処理が完全に自動化されます。上の最初のアニメーションで示すように、設定されたタスクが実行されます。継続的インテグレーション(CI)環境では、この非対話モードが自動的に有効になります。
--only-version を使うと、バージョンの決定にのみプロンプトを表示し、それ以外の処理を自動化できます。
最新バージョン
release-it は最新バージョンをどのように決定するのでしょうか?
package.jsonがあるプロジェクトでは、そのversionが使用されます(これをスキップするには npm をご覧ください)。- それ以外の場合、release-it は最新の Git タグを使ってリリースするバージョンを決定します。
- 最後の手段として、最新バージョンに
0.0.0が使用されます。
また、プラグインを使ってこの動作を上書きすることもできます(例:VERSION ファイルや composer.json を管理する場合)。
- 任意のファイルからバージョンを読み取る、またはそのバージョンを更新するには @release-it/bumper
- コミットメッセージに基づいて推奨されるバージョン更新を取得するには @release-it/conventional-changelog
- CalVer(カレンダーバージョニング)を使うには release-it-calver-plugin
何もリリースせずに次のバージョンを表示するには、--release-version フラグを追加します。次のバージョンがない場合は何も表示せず、正常終了します。
Git
release-it は Git プロジェクトを十分にサポートしており、リリースをステージング、コミット、タグ付けし、任意の Git リモートにプッシュする作業を自動化します。
→ 詳細はGitをご覧ください。
npmjs.com のリリース
2025 年 7 月現在、GitHub と GitLab の CI ワークフローでは、npm のTrusted Publishing OpenID Connect(OIDC) 連携を利用して、CI/CD から安全にトークンなしで公開できるようになりました。これにより、長期間有効なトークンが不要になり、プロビナンスの証明が自動的に生成されます。詳細はdocs/npm.mdをご覧ください。
GitHub Releases
GitHub プロジェクトでは、リリースノートやアセットを含むリリースを Git タグに関連付けることができます。release-it のフローにGitHub リリースを追加する方法は 2 つあります。
- 自動(
GITHUB_TOKENが必要です) - 手動(入力済みのフィールドを使って GitHub のウェブインターフェースから操作します)
→ 詳細はGitHub Releasesをご覧ください。
GitLab Releases
GitLab プロジェクトでは、リリースノートやアセットを含むリリースを Git タグに関連付けることができます。GitLab リリースを自動化するには、次の手順を実行します。
gitlab.release: trueを設定します- パーソナルアクセストークンを取得します(release-it には
apiとself_rotateのスコープが必要です)。 - トークンが環境変数として利用可能であることを確認します。
→ 詳細はGitLab Releasesをご覧ください。
変更履歴
デフォルトでは、release-it は変更履歴を生成し、新しいリリースのバージョンを表示して選択できるようにします。また、この変更履歴は GitHub または GitLab リリースのリリースノートとしても使用されます。
デフォルトのコマンドは git log ... に基づいています。この設定(git.changelog)は上書きできます。GitHub または GitLab リリースのリリースノートをさらにカスタマイズするには、github.releaseNotes または gitlab.releaseNotes を使用します。これらのコマンドの出力が変更履歴として stdout に出力されることを確認してください。release-it はデフォルトではコミットメッセージの規約に依存しない点に注意してください。次のプラグインを利用できます。
- GitHub と GitLab Releases
- auto-changelog
- Conventional Changelog
- Keep A Changelog
- git-cliff
リリースを行わずに変更履歴を表示するには、--changelog フラグを追加します。
→ 詳細は変更履歴をご覧ください。
npm への公開
現在のディレクトリに package.json がある場合、release-it は npm による package.json(存在する場合は
package-lock.json も)のバージョン更新と、npm レジストリへの公開を実行します。
→ 詳細はnpm への公開をご覧ください。
プレリリースの管理
release-it を使うと、プレリリースを簡単に作成できます。プレリリースとは、安定版の semver 範囲にまだ達していないソフトウェアを公開するものです。識別子には通常、「alpha」、「beta」、「rc」(リリース候補)が使われます。プレリリースバージョンの例は 2.0.0-beta.0 です。
→ 詳細はプレリリースの管理をご覧ください。
既存のリリースを更新または再実行する
--no-increment を使用すると、最後のバージョンをインクリメントせず、最後の既存のタグ/バージョンを更新できます。
バージョンがすでにインクリメントされている場合などに役立ちます。以下に例を示します。
- 既存の Git タグに対して、GitHub Release(ドラフトを含む)を更新または公開する。
- npm への公開は成功したものの、Git タグのリモートへのプッシュに失敗した場合。
release-it --no-increment --no-npmを使用してnpm publishをスキップし、同じ Git タグのプッシュを再試行します。
フック
スクリプトフックを使うと、リリースプロセスの任意のタイミング(before:init や
after:release など)でシェルコマンドを実行できます。
形式は [prefix]:[hook] または [prefix]:[plugin]:[hook] です。
| 部分 | 値 |
|---|---|
| prefix | before または after |
| plugin | version、git、npm、github、gitlab |
| hook | init、bump、release |
中央の任意の :plugin 部分を使うと、任意のプラグインのライフサイクルメソッドの直前または直後にフックできます。
コアプラグインには version、git、npm、github、gitlab があります。
after:git:release のようなフックは、git push が失敗した場合、または実行しないように設定されている場合(例:git.push: false)には実行されないことに注意してください。プラグインのライフサイクルメソッドの実行順序の詳細については、実行順序を参照してください。
すべてのフックをスキップするには --no-hooks を使います。コマンドラインから個別のフックを無効にすることもできます(例:--no-hooks.before:init)。
すべてのコマンドで設定変数(テンプレート文字列など)を使用できます。コマンドを配列で指定することもでき、その場合は順番に実行されます。release-it の設定例:
{
"hooks": {
"before:init": ["npm run lint", "npm test"],
"after:my-plugin:bump": "./bin/my-script.sh",
"after:bump": "npm run build",
"after:git:release": "echo After git push, before github release",
"after:release": "echo Successfully released ${name} v${version} to ${repo.repository}."
}
}
変数はデフォルト設定で確認できます。さらに、次の変数も使用できます。
version
latestVersion
changelog
name
repo.remote, repo.protocol, repo.host, repo.owner, repo.repository, repo.project
branchName
releaseUrl
すべての変数はすべてのフックで使用できます。例外として、上記の追加変数は init フックではまだ使用できません。
コマンドの出力をログに記録するには --verbose を使います。
詳細には、フックの一覧は実際には init、beforeBump、bump、beforeRelease、release、afterRelease です。ただし、before:beforeRelease のようなフックは不自然で、実際には通常役立ちません。
コマンドラインから使う場合は、引数を適切に引用符で囲む必要があることに注意してください。
release-it --'hooks.after:release="echo Successfully released ${name} v${version} to ${repo.repository}."'
カスタムフックスクリプト内で @inquirer/prompts を使うと、問題が発生する場合があります(release-it 自体もこれを使用しているためです)。
ドライラン
--dry-run を使うと、実行される予定の対話操作とコマンドを確認できます。
→ 詳細についてはドライランを参照してください。
トラブルシューティングとデバッグ
release-it --verbose(または-V)を使うと、release-it はユーザー定義のフックの出力をすべて表示します。release-it -VVを使うと、release-it はすべての内部コマンドの出力も表示します。NODE_DEBUG=release-it:* release-it [...]を使うと、設定や詳細なエラー情報を表示できます。
設定ファイルで verbose: 2 を指定すると、コマンドラインで -VV を指定した場合と同じになります。
プラグイン
v11 以降、release-it はさまざまな方法で拡張できます。プラグインの例を以下に示します。
| プラグイン | 説明 |
|---|---|
| @release-it/bumper | 任意のファイルからバージョンを読み取り、任意のファイルに書き込みます |
| @release-it/conventional-changelog | 推奨されるバージョン更新、conventional-changelog を提供し、CHANGELOG.md を更新します |
| @release-it/keep-a-changelog | Keep a Changelog の標準に従って CHANGELOG.md を管理します |
| @release-it-plugins/lerna-changelog | lerna-changelog を release-it のパイプラインに統合します |
| @jcamp-code/release-it-changelogen | バージョン管理と変更履歴に @unjs/changelogen を使用します |
| @release-it-plugins/workspaces | 設定済みの各プロジェクトのワークスペースをリリースします |
| release-it-calver-plugin | release-it でカレンダーバージョニング(calver)を有効にします |
| @grupoboticario/news-fragments | 変更履歴ファイルを簡単に生成できます |
| @j-ulrich/release-it-regex-bumper | 正規表現ベースでバージョンを読み書きする release-it 用プラグイン |
| @jcamp-code/release-it-dotnet | バージョン管理に .csproj または .props ファイルを使用し、NuGet の公開を自動化します |
| release-it-pnpm | pnpm ワークスペースの基本的なサポートを追加し、bumpp と changelogithub を統合します |
| changesets-release-it-plugin | Changesets の変更履歴管理と release-it を組み合わせます |
| release-it-gitea | Gitea リリースの作成と添付ファイルのアップロードを行う Gitea プラグイン |
| release-it-beautiful-changelog | @unjs/changelogen による conventional commits を使用して、美しい変更履歴を生成します |
| release-it-git-cliff | git-cliff を使用して次のバージョンを選び、変更履歴を生成します |
内部では、release-it は独自のプラグインアーキテクチャ(Git、GitHub、GitLab、npm 用)を使用しています。
→ npm にある release-it の全プラグインをご覧ください。
→ プラグインの作成方法については、プラグインのドキュメントをご覧ください。
release-it をプログラムから使用する
主に CLI ツールとして使われますが、release-it を依存関係として使用し、独自のスクリプトに統合することもできます。コード例については、release-it をプログラムから使用するをご覧ください。
release-it を使用しているプロジェクト
- AdonisJs
- Axios
- Chakra UI
- Halo
- hosts
- js-cookie
- jQuery
- Madge
- Metalsmith
- n8n
- Node-Redis
- React Native Paper
- Readability.js
- Redux
- Saleor
- Semantic UI React
- tabler-icons
- Swagger(swagger-ui + swagger-editor)
- release-it に依存するリポジトリ
- GitHub で path:**/.release-it.json を検索
Node.js のバージョンサポート
最新のメジャーバージョンは v21 で、Node.js 22.21 以降をサポートしています。
| release-it | Node.js |
|---|---|
| v21 | v22.21.0 |
| v20 | v20.19.0 |
| v19 | v20.12.0 |
| v18 | v20 |
| v17 | v18 |
| v16 | v16 |
| v15 | v14 |
日付と詳細については CHANGELOG.md もご覧ください。
リンク
- 主要な変更や互換性を破る変更については CHANGELOG.md を、詳細なバージョン履歴については リリースをご覧ください。
- 貢献する場合は、まず CONTRIBUTING.md をお読みください。
- このドキュメントに不足している点や不明な点があれば、イシューを作成してください。
ライセンス
職場で release-it を使用していますか?ぜひ私をスポンサーしてください!