

亚马逊 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
```

导致该错误的原因是，一个组件依赖另一个组件的较新版本，但依赖组件被固定到较旧版本时，发生了依赖项不匹配的情况。可通过以下方式纠正该错误：使所有组件都依赖同一版本，以便该版本在这些组件之间同步。除非您确定如何处理版本，否则最好是将所有蓝图提供的包保持在同一最新版本（`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 工作区 monorepo
<a name="upgrade-tooling-components"></a>

使用以下命令可从自定义蓝图的存储库的根目录升级实用工具和组件：

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

如果您未使用 monorepo，请使用以下命令：

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

可用于升级工具和组件的其他选项：
+ 使用 npm 视图 `@caws-blueprint-component/<some-component>` 获取最新版本。
+ 通过在 package.json 文件中设置版本并使用以下命令来手动升级到最新版本：`yarn`。所有组件和实用工具都应具有同一版本。