

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

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

# 處理相依性、不相符和工具
<a name="dependencies-tooling-bp"></a>

不正確的相依性管理可能會導致使用自訂藍圖的建置失敗和執行期問題。過時的工具和元件可能會阻止藍圖使用者存取最新的功能和錯誤修正。您可以管理相依性、處理相依性不相符，以及升級工具和元件，以確保所有相依性都依賴於相同的元件版本和元件。

**Topics**
+ [新增相依性](#add-dependencies)
+ [處理相依性類型不相符](#handle-dependency-mismatches)
+ [使用 yarn 和 npm](#use-yarn-npm)
+ [升級工具與元件](#upgrade-tooling-components)

## 新增相依性
<a name="add-dependencies"></a>

身為藍圖作者，您可能需要將套件新增至藍圖，例如 `@amazon-codecatalyst/blueprint-component.environments`。您需要使用該套件更新 `projen.ts` 檔案，然後使用 [Projen](https://github.com/projen/projen) 重新產生專案的組態。Projen 充當每個藍圖程式碼庫的專案模型，透過變更模型轉譯組態檔案的方式，提供向後推送相容工具更新的功能。`package.json` 檔案是 Projen 模型部分擁有的檔案。Projen 認可 package.json 檔案中包含的相依性版本，但其他選項需要源自模型。

**新增相依性和更新`projenrc.ts`檔案**

1. 在 `projen.ts` 檔案中，導覽至 deps 區段。

1. 新增您要在藍圖中使用的相依性。

1. 使用下列命令來重新產生專案的組態：

   ```
   yarn projen && yarn
   ```

## 處理相依性類型不相符
<a name="handle-dependency-mismatches"></a>

在 [Yarn](https://yarnpkg.com/) 更新之後，您可能會收到以下有關儲存庫參數的錯誤：

```
Type 'SourceRepository' is missing the following properties from type 'SourceRepository': synthesisSteps, addSynthesisStep
```

錯誤是因為當一個元件依賴於另一個元件的較新版本，但依賴元件鎖定到較舊版本時發生相依性不相符。您可以透過讓所有元件都依賴相同的版本來修正錯誤，讓版本在它們之間同步。建議您將 al blueprint-vended 套件保留在相同的最新版本 (`0.0.x`) 下，除非您確定如何處理版本。下列範例示範如何設定 `package.json` 檔案，讓所有相依性都依賴相同的版本：

```
...
"@caws-blueprint-component/caws-environments": "^0.1.12345",
"@caws-blueprint-component/caws-source-repositories": "^0.1.12345",
"@caws-blueprint-component/caws-workflows": "^0.1.12345",
"@caws-blueprint-component/caws-workspaces": "^0.1.12345",
"@caws-blueprint-util/blueprint-utils": "^0.1.12345",
...
"@caws-blueprint/blueprints.blueprint": "*",
```

設定所有相依性的版本之後，請使用下列命令：

```
yarn install
```

## 使用 yarn 和 npm
<a name="use-yarn-npm"></a>

藍圖使用 [Yarn](https://yarnpkg.com/) 進行工具。使用 [npm](https://www.npmjs.com/) 和 Yarn 將導致工具問題，因為相依性樹的解析方式各不相同。為了避免此類問題，最好只使用 Yarn。

如果您不小心使用 npm 安裝相依性，您可以移除產生的`package-lock.json`檔案，並確保您的`.projenrc.ts`檔案已更新為您需要的相依性。您可以使用 Projen 重新產生專案的組態。

使用下列項目從模型重新產生：

```
yarn projen
```

確定您的 .projenrc.ts 檔案已更新為必要的相依性後，請使用下列命令：

```
yarn
```

## 升級工具與元件
<a name="upgrade-tooling-components"></a>

有時，您可能想要升級您的工具和元件，以引進可用的新功能。建議您將所有元件保留在相同的版本上，除非您確定如何處理版本。版本會在元件之間同步，因此所有元件的相同版本可確保它們之間的適當相依性。

### 使用 Yarn 工作區單儲存庫
<a name="upgrade-tooling-components"></a>

使用下列命令，從自訂藍圖儲存庫的根目錄升級 utils 和元件：

```
yarn upgrade @amazon-codecatalyst/*
```

如果您不使用單儲存庫，請使用下列命令：

```
yarn upgrade —pattern @amazon-codecatalyst/*
```

您可以使用其他選項來升級工具與元件：
+ 使用 npm 檢視`@caws-blueprint-component/<some-component>`取得最新版本。
+ 透過在 package.json 檔案中設定 版本並使用下列命令，手動增加至最新版本：`yarn`。所有元件和 utils 都應具有相同的版本。