

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
```

이 오류는 한 구성 요소가 최신 버전의 다른 구성 요소에 의존할 때 발생하는 종속성 불일치로 인해 발생하지만, 종속 구성 요소는 이전 버전에 고정됩니다. 모든 구성 요소가 동일한 버전에 의존하도록 하여 해당 구성 요소 간에 버전이 동기화되도록 하여 오류를 수정할 수 있습니다. 버전을 처리하는 방법이 확실하지 않다면 블루프린트가 포함된 패키지를 동일한 최신 버전(`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/*
```

도구 및 구성 요소를 업그레이드하는 데 사용할 수 있는 기타 옵션:
+ 최신 버전을 확인하려면 `@caws-blueprint-component/<some-component>`를 사용합니다.
+ package.json 파일에서 버전을 설정하고 `yarn` 명령을 사용하여 수동으로 최신 버전으로 높입니다. 모든 구성 요소와 유틸리티는 버전이 동일해야 합니다.