モノレポ向けsemantic-release設定
パッケージごとのリリースを行うモノレポプロジェクト向けsemantic-release設定。pkgRootとexecプラグインを使用して独立バージョニングのマルチパッケージリポジトリを管理。
Advanced Configuration
詳細な説明
モノレポでのsemantic-release
モノレポでは各パッケージに独立したバージョニングと公開が必要なため、特別な処理が必要です。最も一般的なアプローチは、pkgRootオプションによるパッケージごとの設定です。
パッケージごとの設定
各パッケージディレクトリに.releaserc.jsonを配置します:
{
"branches": ["main"],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
["@semantic-release/npm", {
"pkgRoot": "."
}],
["@semantic-release/exec", {
"prepareCmd": "npm run build"
}],
"@semantic-release/github"
]
}
ルートレベル設定とExec
ルートから管理するモノレポでは、@semantic-release/execを使用してパッケージ固有のコマンドを実行します:
{
"branches": ["main"],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
["@semantic-release/exec", {
"prepareCmd": "node scripts/update-versions.js ${nextRelease.version}",
"publishCmd": "node scripts/publish-packages.js"
}],
"@semantic-release/github"
]
}
代替手段:semantic-release-monorepo
semantic-release-monorepoパッケージはsemantic-releaseを拡張して、パッケージディレクトリによるコミットの自動フィルタリングを行い、大規模モノレポの設定を簡素化します。
ユースケース
単一リポジトリに複数の関連パッケージを持つ組織(例:React、Vue、Angularラッパー用の別々のパッケージを持つコンポーネントライブラリ)で、各パッケージに独立したバージョニングと公開が必要な場合。