Skip to content
Latchkey

Changesets vs semantic-release: CIでのモノレポ向けリリース

Changesetsは明示的に書かれた変更ファイルを使います(モノレポに最適)。semantic-releaseはすべてをConventional Commitsから自動的に導出します。

Changesetsでは、コントリビューターが変更ごとにバンプを記述する小さなchangesetファイルを追加します。その後、リリースPRが影響を受けるパッケージをバージョニングして公開します - モノレポに強力です。semantic-releaseはコミットメッセージからバージョンを推測し、自動的に公開します。

Changesetssemantic-release
バージョニングのソース書かれたchangesetファイルConventional Commits
モノレポサポートファーストクラス(パッケージごと)可能、より多くのセットアップ
リリースフローリリースPR(レビュー)pushで自動
コントリビューターの労力changesetを追加準拠したコミットを書く
最適な用途モノレポ、意図的なバンプ単一パッケージ、完全自動化

CIでは

Changesetsはモノレポ向けに作られています: 各パッケージは明示的な変更ファイルからリリースPRを介してバージョニングされ公開され、パッケージごとの精密な制御とレビューゲートを提供します。semantic-releaseは単一パッケージと、コミットからの完全に自動化された公開に最適です。1つのリポジトリで多数のパッケージを保守するなら、通常Changesetsのほうが適します。レビュー手順なしの1パッケージなら、semantic-releaseのほうがシンプルです。

CIのセットアップ

公開とバージョニングのために、リリースジョブにトークンを与え、モノレポでは影響を受けるパッケージにビルドをキャッシュしスコープしてください。リリースジョブはCIのrunner上で実行されます。より高速なマネージドrunnerは、多数のパッケージをバンドルまたはコンパイルするリリースビルドを短縮します。

結論

レビューゲート付きで明示的なパッケージごとのバージョニングが欲しいモノレポ: Changesets。完全に自動化されたコミット駆動のリリースが欲しい単一パッケージ: semantic-release。モノレポのニーズと、リリースごとにどれだけ手動の意図を求めるかで選んでください。

関連ガイド