mcpField
R
release-it

release-it

公式Agent-ready
github.com開発ツール9.1krelease-it3 週間前に更新
リポジトリ公式サイト

release-it について

release-it はバージョン更新、変更履歴の生成、Git タグ作成、パッケージ公開などのリリース作業を自動化します。設定ファイルによるワークフロー定義をサポートし、npm、Git、複数のホスティングプラットフォームと統合します。

主な機能

  1. 01バージョン番号の自動更新と Git タグの作成
  2. 02プロジェクトの変更履歴ファイルの生成と更新
  3. 03npm およびその他のレジストリへのパッケージ公開
  4. 04プレリリース、ドライラン、カスタムフック対応

活用シーン

  1. 01オープンソースプロジェクトの定期的なリリースサイクルを効率化
  2. 02CI/CD パイプラインのバージョン管理と公開を自動化
  3. 03手動リリースプロセスのエラーとバージョン不一致を削減

インストール

OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。

$
npm install -D release-it

インストール後にrelease-it --versionを実行して確認します。

コマンド例

よく使うコマンドを使う順に並べています。

01
npx release-it
02
npx release-it --dry-run

詳細

Release It! 🚀

🚀 バージョン管理やパッケージ公開に関連するタスクを自動化する汎用 CLI ツールです。

README の画像

release-it は、バージョン管理や、柔軟な設定、強力なプラグインシステム、プロジェクトのテスト、ビルド、公開に必要な任意のコマンドを実行するフックを使って、さまざまな場所への公開に利用できます。

Action Status npm version

職場で 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

モノレポ

モノレポをお使いですか?こちらのモノレポのレシピをご覧ください。

グローバルインストール

上記のようにプロジェクトごとにインストールする方法をおすすめしますが、グローバルインストールにも対応しています。

  • 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 は対話モードで動作し、各タスクの実行前に確認できます。

README の画像

--ci オプションを使うと、プロンプトなしで処理が完全に自動化されます。上の最初のアニメーションで示すように、設定されたタスクが実行されます。継続的インテグレーション(CI)環境では、この非対話モードが自動的に有効になります。

--only-version を使うと、バージョンの決定にのみプロンプトを表示し、それ以外の処理を自動化できます。

最新バージョン

release-it は最新バージョンをどのように決定するのでしょうか?

  1. package.json があるプロジェクトでは、その version が使用されます(これをスキップするには npm をご覧ください)。
  2. それ以外の場合、release-it は最新の Git タグを使ってリリースするバージョンを決定します。
  3. 最後の手段として、最新バージョンに 0.0.0 が使用されます。

また、プラグインを使ってこの動作を上書きすることもできます(例:VERSION ファイルや composer.json を管理する場合)。

何もリリースせずに次のバージョンを表示するには、--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 つあります。

  1. 自動(GITHUB_TOKEN が必要です)
  2. 手動(入力済みのフィールドを使って GitHub のウェブインターフェースから操作します)

→ 詳細はGitHub Releasesをご覧ください。

GitLab Releases

GitLab プロジェクトでは、リリースノートやアセットを含むリリースを Git タグに関連付けることができます。GitLab リリースを自動化するには、次の手順を実行します。

→ 詳細は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] です。

部分値
prefixbefore または after
pluginversion、git、npm、github、gitlab
hookinit、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-changelogKeep a Changelog の標準に従って CHANGELOG.md を管理します
@release-it-plugins/lerna-changeloglerna-changelog を release-it のパイプラインに統合します
@jcamp-code/release-it-changelogenバージョン管理と変更履歴に @unjs/changelogen を使用します
@release-it-plugins/workspaces設定済みの各プロジェクトのワークスペースをリリースします
release-it-calver-pluginrelease-it でカレンダーバージョニング(calver)を有効にします
@grupoboticario/news-fragments変更履歴ファイルを簡単に生成できます
@j-ulrich/release-it-regex-bumper正規表現ベースでバージョンを読み書きする release-it 用プラグイン
@jcamp-code/release-it-dotnetバージョン管理に .csproj または .props ファイルを使用し、NuGet の公開を自動化します
release-it-pnpmpnpm ワークスペースの基本的なサポートを追加し、bumpp と changelogithub を統合します
changesets-release-it-pluginChangesets の変更履歴管理と release-it を組み合わせます
release-it-giteaGitea リリースの作成と添付ファイルのアップロードを行う Gitea プラグイン
release-it-beautiful-changelog@unjs/changelogen による conventional commits を使用して、美しい変更履歴を生成します
release-it-git-cliffgit-cliff を使用して次のバージョンを選び、変更履歴を生成します

内部では、release-it は独自のプラグインアーキテクチャ(Git、GitHub、GitLab、npm 用)を使用しています。

→ npm にある release-it の全プラグインをご覧ください。

→ プラグインの作成方法については、プラグインのドキュメントをご覧ください。

release-it をプログラムから使用する

主に CLI ツールとして使われますが、release-it を依存関係として使用し、独自のスクリプトに統合することもできます。コード例については、release-it をプログラムから使用するをご覧ください。

release-it を使用しているプロジェクト

Node.js のバージョンサポート

最新のメジャーバージョンは v21 で、Node.js 22.21 以降をサポートしています。

release-itNode.js
v21v22.21.0
v20v20.19.0
v19v20.12.0
v18v20
v17v18
v16v16
v15v14

日付と詳細については CHANGELOG.md もご覧ください。

リンク

  • 主要な変更や互換性を破る変更については CHANGELOG.md を、詳細なバージョン履歴については リリースをご覧ください。
  • 貢献する場合は、まず CONTRIBUTING.md をお読みください。
  • このドキュメントに不足している点や不明な点があれば、イシューを作成してください。

ライセンス

MIT

職場で release-it を使用していますか?ぜひ私をスポンサーしてください!

コメント