Changeset
Astroモノレポ用のChangesetファイルを作成します。Changesetは、どのパッケージが変更されたか、セマンティックバージョニングのバンプタイプ、そしてCHANGELOGエントリとなるユーザー向けメッセージを宣言します。
パッケージを変更するすべてのPRにはchangesetが必要です。ただし、examples/* の変更は例外です。
ファイルの作成
リポジトリルートで pnpm changeset --empty を実行します。これにより、.changeset/ 内にランダムな名前の .md ファイルが空のフロントマター付きで作成されます。ファイル名を発明したりディレクトリを調べる必要はありません。その後、生成されたファイルを編集して、パッケージのバンプとメッセージを追加します。
フォーマット
---
'<package-name>': patch
---
<changeset message>
- パッケージ名は、そのパッケージの
package.jsonのnameフィールドと完全に一致する必要があります(例:'astro'、'@astrojs/node') - バンプタイプ:
patch、minor、major - 1つのchangesetファイルで複数のパッケージをカバーできます
- コアの
astroパッケージに対するmajorおよびminorバンプはCIでブロックされ、メンテナーによるレビューが必要です
メッセージの書き方
Changesetメッセージは公開されるCHANGELOGエントリです。コードレビュアーではなく、Astroユーザーに向けて書きましょう。
「このPRは...」という文を完成させる現在形の動詞で始めます:
- Adds、Removes、Fixes、Updates、Refactors、Improves、Deprecates
変更はAstroサイトを構築するユーザーがどのように体験するかの観点から説明し、内部実装の詳細ではありません:
// 実装に焦点を当てすぎ
Logs helpful errors if content is invalid
// より良い例 — ユーザーへの影響
Adds logging for content collections configuration errors.
パッチ更新
通常は1行で十分です。複数の文を書く場合を除き、末尾の句読点は不要です。
---
'astro': patch
---
Fixes a bug where the toolbar audit would incorrectly flag images as above the fold
---
'astro': patch
---
Refactors internal handling of styles and scripts for content collections to improve build performance
読者がその変更が自分に関係あるかどうかを判断できるようにしましょう。変更が特定のオプションや関数に関連している場合は、具体的なAPI名(バッククォートで囲んで)を含めます。APIがユーザーに直接関係しない場合は、代わりにユースケースや最終結果を説明します:
// 曖昧
Improves automatic fallbacks generation
// 明確 — 読者は影響を受けるかどうかを判断できる
Improves automatic `fallbacks` generation for the experimental Fonts API
新機能(minor)
「Adds」で始め、新しいAPIの名前を挙げ、ユーザーが何をできるようになったかを説明します。必要に応じてコード例を含めます:
---
'astro': minor
---
Adds a new, optional property `timeout` for the `client:idle` directive
This value allows you to specify a maximum time to wait, in milliseconds, before hydrating a UI framework component.
```astro
<Button client:idle={{ timeout: 500 }} />
```
新機能は、ブログ記事にも活用できるより豊かな説明を書く機会です。長いエントリのガイダンスについては、Astro changeset docs を参照してください。
破壊的変更(major)
「Removes」「Changes」「Deprecates」などの動詞を使用します。移行ガイダンスを必ず含める必要があります。必要に応じて差分コードサンプルを使用します:
---
'astro': major
---
Removes support for Shiki custom language's `path` property. The language JSON file must now be imported and passed to the option instead.
```diff
// astro.config.js
+ import customLang from './custom.tmLanguage.json'
export default defineConfig({
markdown: {
shikiConfig: {
langs: [
- { path: './custom.tmLanguage.json' },
+ customLang,
],
},
},
})
```
デフォルト値の変更では、古いデフォルト、新しいデフォルト、および以前の動作を復元する方法を記載する必要があります。
長いChangeset
長い説明には、セクションを区切るために #### およびそれより深い見出し(## や ### は不可)を使用します。これにより、エントリが組み込まれたときにCHANGELOGの可読性が維持されます:
---
'astro': minor
---
Adds a new Sessions API to store user state between requests for on-demand rendered pages.
#### Configuring session storage
<!-- ... -->
#### Using sessions
<!-- ... -->