---
title: バージョニング
order: 7.5
icon: phosphor-duotone:git-branch
summary: 複数のリリースのドキュメントを同時に提供する - バージョンのスナップショットを切り出すだけで、すべてのテーマにバージョンスイッチャーが無料で付いてきます。
tags: [ガイド, バージョニング]
---

# バージョニング

バージョン管理されたドキュメントは設定より規約を重視します - 有効にするための
`bxsites.json` のキーはありません。`docs/versions/` フォルダを追加すると、
その直下の各サブフォルダが、通常の `docs/`（常に「Latest」としてビルドされます）
と並んで、それぞれ独立した完全なドキュメントツリーとしてビルドされます:

```text title="docs/ layout"
docs/
├── index.md
├── guides/
└── versions/
    ├── 1.0/
    │   ├── index.md
    │   └── guides/
    └── 2.0/
        ├── index.md
        └── guides/
```

各バージョンフォルダは、通常の `docs/` と同じ形をしたツリーです - 独自の
`index.md`、独自のナビ、独自のページを持ち、内部リンクにはすべて適切な
プレフィックスが付けられて `site/versions/<name>/` にビルドされ、プロジェクト
の単一の `bxsites.json` 設定/テーマを共有します。`docs/versions/` の直下に
（サブフォルダの中ではなく）直接置かれた単独のファイルは無視されます。

## 新しいバージョンを切り出す

`version:new` は*現在*の `docs/` ツリーを `docs/versions/<name>/` にスナップ
ショットします - 通常のワークフローは、あるリリースのドキュメントを書き終え、
次のリリース向けのドキュメントを書き始める直前にバージョンを切り出すことで、
スナップショットが実際に出荷された内容そのものを固定するというものです:

```bash title="Terminal"
bxSites version:new --name=1.0
```

- `--name`（必須）- バージョンフォルダ/ラベル、例: `1.0`

スナップショットは `assets/`、`versions/`、`i18n/`、`blog/` を除外します -
これらはそれぞれ独自に個別ロードされるツリーであり、バージョン自身の
コンテンツの一部ではないため、決してバージョンの中に複製されません。

これに相当する「切り出しを取り消す」動詞はなく、特定のバージョンを対象とする
他の動詞もありません - `page:new`/`page:rename`/`post:new` などは常にメインの
`docs/` ツリーに対して動作します。すでに切り出されたバージョン自身のページを
編集する（例えば `docs/versions/1.0/guides/setup.md` の誤字を直す）ことは、
他のどんなページとも同じように、そのファイルを直接編集するだけです。

## ビルドされる内容

すべてのバージョンは `site/versions/<name>/` にビルドされ、独自のナビ、
パンくずリスト、前/次ページリンク、そのバージョン自身のソースパスに正しく
スコープされた `editUri` を持ちます。バージョン名は、アルファベット順ではなく
**新しい順、数値として**ソートされます - `2.0` は `10.0` より前にソートされます -
そして、複数のバージョンが存在するようになると（メインの「Latest」ツリーも
1 つとしてカウントされます）、すべての組み込みテーマが自動的にヘッダーに
バージョンスイッチャーのドロップダウンをレンダリングします。オプトインは
不要です。バージョンを切り替えると、可能な限り同等のページ自身のツリーに
留まります。

`sitemap.xml` と `llms.txt` には、メインサイトのページと並んで、すべての
バージョンのページが含まれます - バージョンは隠されたアーカイブではなく、
サイトの完全にクロール/リンク可能な第一級の一部です。

## i18n との組み合わせ

バージョンも翻訳できます - `docs/versions/<name>/i18n/<code>/` という規約
（トップレベルの `docs/i18n/<code>/` がまさに `docs/` 自体をミラーするのと
同じ方法で、バージョン自身の構造をミラーします）については
[i18n 自身の「バージョンとロケールを組み合わせたドキュメント」](i18n.md#バージョンとロケールを組み合わせたドキュメント)
を参照してください。

## 現在対象外の機能

- **検索はツリーごとにスコープされ、バージョン間で統合されません。** デフォルトの
  `local` 検索プロバイダーは、実際の `build` の間にツリーごとに個別の
  `search-index.json` を書き出します - 「Latest」用の `site/search-index.json`、
  バージョン `2.0` 用の `site/versions/2.0/search-index.json` という具合です -
  そのため訪問者の検索は、今読んでいるバージョンだけをカバーし、すべての
  バージョンを一度にカバーすることはありません。スタンドアロンの
  `search-index`/`search:query` CLI 動詞はさらに一歩進んで、バージョンが
  いくつ存在していても常にメインの `docs/` ツリーだけを読み込みます -
  これらはフルビルドではなく、現在作業中のドキュメントに対する簡易チェックを
  意図しているためです。実際のバージョン自身のインデックスが必要な場合は、
  先に `build` を実行してください。`pagefind` 検索プロバイダーは例外です:
  これはビルド済みの `site/` 全体を一度のパスでクロールします。バージョンも
  含めてです - [検索](search.md) を参照してください。
- **非推奨/EOL フラグも、カスタムラベルもありません。** バージョンのスイッチャー
  エントリは常にそのフォルダ名そのものです - あるバージョンを非サポートと
  マークしたり、フォルダ名とは別に表示ラベルをリネームしたりする設定はありません。
  古いバージョンをアーカイブするには、そのフォルダをそのまま残しておくか
  （あるいは削除してリンク切れを受け入れるか、他のページを削除する場合と
  同じです）。
