semantic-releaseによる自動Changelog生成

semantic-releaseでCHANGELOG.mdファイルを自動作成・管理するための設定。@semantic-release/changelogと@semantic-release/gitを使用してchangelogをリポジトリにコミットバック。

Basic Configuration

詳細な説明

自動CHANGELOG.md生成

semantic-releaseワークフローにchangelogを追加するには、ファイルを生成する@semantic-release/changelogとリポジトリにコミットバックする@semantic-release/gitの2つの追加プラグインが必要です。

設定

{
  "branches": ["main"],
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    ["@semantic-release/changelog", {
      "changelogFile": "CHANGELOG.md"
    }],
    "@semantic-release/npm",
    "@semantic-release/github",
    ["@semantic-release/git", {
      "assets": ["CHANGELOG.md", "package.json", "package-lock.json"],
      "message": "chore(release): ${nextRelease.version} [skip ci]"
    }]
  ]
}

プラグインの順序が重要

配列内のプラグインの順序は重要です:

  1. commit-analyzer はリリースタイプを決定するため最初に来る必要があります
  2. release-notes-generator はchangelogとgithubの両方で使用されるノートを生成します
  3. changelog は生成されたノートを使用してCHANGELOG.mdを書き込みます
  4. npm はpackage.jsonのバージョンを更新します
  5. github はGitHubリリースを作成します
  6. git は最後に来る必要があります — 前のプラグインによるすべてのファイル変更をコミットします

[skip ci]コミットメッセージ

コミットメッセージテンプレートには[skip ci]が含まれており、changelogコミットが別のCIランをトリガーして無限ループを作成することを防ぎます。

Changelogフォーマット

生成されるCHANGELOG.mdはKeep a Changelog規約に従い、バージョンごとにグループ化され、コミットタイプでソートされます。

ユースケース

ドキュメント目的でリポジトリに永続的なCHANGELOG.mdを必要とするプロジェクト、changelogを表示するパッケージレジストリ、またはコンプライアンスと監査証跡のために変更履歴が必要なチーム向け。

試してみる — Semantic Release Config Builder

フルツールを開く