

Amazon CodeCatalyst 不再向新客戶開放。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[如何從 CodeCatalyst 遷移](migration.md)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 自訂藍圖概念
<a name="custom-bp-concepts"></a>

以下是在 CodeCatalyst 中使用自訂藍圖時，您應該知道的一些概念和術語。

**Topics**
+ [藍圖專案](#blueprint-project-concept)
+ [空間藍圖](#space-blueprints-concept)
+ [空間藍圖目錄](#blueprint-catalog-concept)
+ [合成](#synthesis-concept)
+ [重新合成](#resynthesis-concept)
+ [部分選項](#partial-options-concept)
+ [Projen](#projen-concept)

## 藍圖專案
<a name="blueprint-project-concept"></a>

藍圖專案可讓您開發藍圖並將其發佈至您的空間。來源儲存庫是在專案建立程序期間建立的，而儲存庫的名稱是您在輸入**專案資源**詳細資訊時選擇的儲存庫名稱。在藍圖建立程序期間，如果您選擇產生工作流程版本，則會使用**藍圖建置器**藍圖在您的藍圖中建立發佈工作流程。工作流程會自動發佈您的最新版本。

## 空間藍圖
<a name="space-blueprints-concept"></a>

導覽至空間的藍圖區段時，您可以從空間**藍圖**資料表檢視和管理所有**藍圖**。藍圖發佈至您的空間後，即可做為要從空間藍圖目錄中新增和移除的空間藍圖。您也可以在空間的藍圖區段中，管理發佈許可並從 **刪除藍圖**。如需詳細資訊，請參閱[檢視自訂藍圖的詳細資訊、版本和專案](view-bp.md)。

## 空間藍圖目錄
<a name="blueprint-catalog-concept"></a>

您可以從空間的藍圖目錄檢視所有新增的自訂藍圖。這是空間成員可以選擇自訂藍圖以建立新專案的地方。此目錄與 CodeCatalyst 目錄不同，該目錄已為所有空間成員提供可用的藍圖。如需詳細資訊，請參閱[使用 CodeCatalyst 藍圖建立全面的專案使用藍圖建立全面的專案](project-blueprints.md)。

## 合成
<a name="synthesis-concept"></a>

合成是產生 CodeCatalyst 專案套件的程序，代表專案中的原始碼、組態和資源。CodeCatalyst 部署 API 操作接著會使用套件來部署至專案。您可以在本機執行此程序，同時開發自訂藍圖來模擬專案建立，而無需在 CodeCatalyst 中建立專案。下列命令可用來執行合成：

```
yarn blueprint:synth             # fast mode
yarn blueprint:synth --cache     # wizard emulation mode
```

藍圖會透過呼叫 主`blueprint.ts`類別來開始，該選項合併於 。 `defaults.json`會在 `synth/synth.[options-name]/proposed-bundle/` 資料夾下產生新的專案套件。根據您設定的選項，輸出包含自訂藍圖產生的專案套件，包括您可能已設定[的部分選項](#partial-options-concept)。

## 重新合成
<a name="resynthesis-concept"></a>

重新合成是使用不同的藍圖選項或現有專案的藍圖版本來重新產生藍圖的程序。身為藍圖作者，您可以在自訂藍圖程式碼中定義自訂合併策略。您也可以在 中定義擁有權界限`.ownership-file`，以指定允許更新藍圖的程式碼庫部分。雖然自訂藍圖可以提議更新 `.ownership-file`，但使用自訂藍圖的專案開發人員可以判斷其專案的擁有權界限。您可以在本機執行重新合成，並在發佈自訂藍圖之前進行測試和更新。使用下列命令執行重新合成：

```
yarn blueprint:resynth             # fast mode
yarn blueprint:resynth --cache     # wizard emulation mode
```

藍圖會透過呼叫 主`blueprint.ts`類別來開始，該選項合併於 。 `defaults.json`會在 `synth/resynth.[options-name]/` 資料夾下產生新的專案套件。根據您設定的選項，輸出包含自訂藍圖產生的專案套件，包括您可能已設定[的部分選項](#partial-options-concept)。

合成和重新合成程序之後會建立下列內容：
+ **proposed-bundle** - 使用目標藍圖版本的新選項執行合成時的輸出。
+ **existing-bundle** - 現有專案的模擬。如果此資料夾中沒有任何內容，則會使用與他相同的輸出產生`proposed-bundle`。
+ **ancestor-bundle** - 使用先前版本、先前選項或組合執行時，藍圖會產生的模擬。如果此資料夾中沒有任何內容，則會使用與 相同的輸出產生`proposed-bundle`。
+ **resolved-bundle** - 套件一律會重新產生，並預設為 `proposed-bundle`、 `existing-bundle`和 之間的三向合併`ancestor-bundle`。此套件提供重新合成會在本機輸出內容的模擬。

若要進一步了解藍圖輸出套件，請參閱 [使用重新合成產生檔案](merge-strategies-lm.md#three-way-merge-lm)。

## 部分選項
<a name="partial-options-concept"></a>

您可以在 中新增`src/wizard-configuration/`不需要列舉整個`Options`界面的選項變化，且選項會合併在`defaults.json`檔案頂端。這可讓您針對特定選項量身打造測試案例。

**範例：**

`Options` 介面：

```
{
  language: "Python" | "Java" | "Typescript",
  repositoryName: string
  ...
}
```

`defaults.json` 檔案：

```
{
  language: "Python",
  repositoryName: "Myrepo"
  ...
}
```

其他組態測試：
+ 

  ```
  #wizard-config-typescript-test.json
  {
    language: "Typescript",
  }
  ```
+ 

  ```
  #wizard-config-java-test.json
  {
    language: "Java",
  }
  ```

## Projen
<a name="projen-concept"></a>

Projen 是一種開放原始碼工具，自訂藍圖會用來保持其更新和一致性。藍圖以 Projen 套件的形式提供，因為此架構可讓您建置、綁定和發佈專案，而且您可以使用 界面來管理專案的組態和設定。

您可以使用 Projen 大規模更新藍圖，即使在建立之後也是如此。Projen 工具是產生專案套件的藍圖合成背後的基礎技術。Projen 擁有專案的組態，不應影響您身為藍圖作者。您可以在新增相依性後執行 `yarn projen` 來重新產生專案的組態，也可以變更 `projenrc.ts` 檔案中的選項。Projen 也是自訂藍圖的基礎產生工具，用於合成專案。如需詳細資訊，請參閱 [projen GitHub 頁面](https://github.com/projen/projen)。若要進一步了解如何使用 Projen，請參閱 [Projen 文件](http://projen.io/)。