モノレポ向け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ラッパー用の別々のパッケージを持つコンポーネントライブラリ)で、各パッケージに独立したバージョニングと公開が必要な場合。

試してみる — Semantic Release Config Builder

フルツールを開く