

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

# 設定和使用 Yarn 搭配 CodeArtifact
<a name="npm-yarn"></a>

建立儲存庫之後，您可以使用 Yarn 用戶端來管理 npm 套件。

**注意**  
`Yarn 1.X` 會從 npm 組態檔案 (.npmrc) 讀取和使用資訊，而 `Yarn 2.X` 不會。的組態`Yarn 2.X`必須在 .yarnrc.yml 檔案中定義。

**Contents**
+ [使用 `aws codeartifact login`命令設定 Yarn 1.X](#npm-yarn-configure-login)
+ [使用 `yarn config set`命令設定 Yarn 2.X](#npm-yarn-configure-yarn-command)

## 使用 `aws codeartifact login`命令設定 Yarn 1.X
<a name="npm-yarn-configure-login"></a>

對於 `Yarn 1.X`，您可以使用 `aws codeartifact login`命令設定 Yarn with CodeArtifact。`login` 命令將使用 CodeArtifact 儲存庫端點資訊和登入資料來設定 \~/.npmrc 檔案。透過 `Yarn 1.X`，`yarn`命令會使用來自 \~/.npmrc 檔案的組態資訊。

**`Yarn 1.X` 使用登入命令設定**

1. 如果您尚未這麼做，請設定 AWS 登入資料以搭配 使用 AWS CLI，如 中所述[CodeArtifact 入門](getting-started.md)。

1. 若要成功執行`aws codeartifact login`命令，必須安裝 npm。如需安裝說明，請參閱 [npm 文件中的下載和安裝 Node.js 和](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm/) *npm*。

1. 使用 `aws codeartifact login`命令來擷取 CodeArtifact 登入資料，並設定您的 \~/.npmrc 檔案。
   + 以您的 CodeArtifact 網域名稱取代 {{my\_domain}}。
   + 以網域擁有者 AWS 的帳戶 ID 取代 {{111122223333}}。如果您要存取您擁有之網域中的儲存庫，則不需要包含 `--domain-owner`。如需詳細資訊，請參閱[跨帳戶網域](domain-overview.md#domain-overview-cross-account)。
   + 將 {{my\_repo}} 取代為您的 CodeArtifact 儲存庫名稱。

   ```
   aws codeartifact login --tool npm --domain {{my_domain}} --domain-owner {{111122223333}} --repository {{my_repo}}
   ```

   `login` 命令會對 \~/.npmrc 檔案進行下列變更：
   + 使用您的 AWS 登入資料從 CodeArtifact 擷取授權字符後，新增授權字符。
   + 將 npm 登錄檔設定為 `--repository`選項指定的儲存庫。
   + **對於 npm 6 和更低：**新增 ，`"always-auth=true"`以便為每個 npm 命令傳送授權字符。

   呼叫 後的預設授權期間`login`為 12 小時，`login`必須呼叫 才能定期重新整理字符。如需使用 `login`命令建立的授權字符的詳細資訊，請參閱 [使用 `login`命令建立的字符](tokens-authentication.md#auth-token-login)。

1. **對於 npm 7.X 和 8.X**，您必須將 `always-auth=true`新增至 \~/.npmrc 檔案，才能使用 Yarn。

   1. 在文字編輯器中開啟您的 \~/.npmrc 檔案，並在新行`always-auth=true`新增 。

您可以使用 `yarn config list`命令來檢查 Yarn 是否使用正確的組態。執行 命令後，請檢查 `info npm config`區段中的值。內容看起來應該類似下列程式碼片段。

```
info npm config
{
  registry: 'https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/',
  '//my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/:_authToken': 'eyJ2ZXI...',
  'always-auth': true
}
```

## 使用 `yarn config set`命令設定 Yarn 2.X
<a name="npm-yarn-configure-yarn-command"></a>

下列程序詳細說明如何使用 命令從命令列`Yarn 2.X`更新`.yarnrc.yml`組態來設定 `yarn config set`。

**從命令列更新`yarnrc.yml`組態**

1. 如果您尚未這麼做，請設定 AWS 登入資料以搭配 使用 AWS CLI，如 中所述[CodeArtifact 入門](getting-started.md)。

1. 使用 `aws codeartifact get-repository-endpoint`命令來取得 CodeArtifact 儲存庫的端點。
   + 將 {{my\_domain}} 取代為您的 CodeArtifact 網域名稱。
   + 以網域擁有者 AWS 的帳戶 ID 取代 {{111122223333}}。如果您要存取您擁有之網域中的儲存庫，則不需要包含 `--domain-owner`。如需詳細資訊，請參閱[跨帳戶網域](domain-overview.md#domain-overview-cross-account)。
   + 將 {{my\_repo}} 取代為您的 CodeArtifact 儲存庫名稱。

   ```
   aws codeartifact get-repository-endpoint --domain {{my_domain}} --domain-owner {{111122223333}} --repository {{my_repo}} --format npm
   ```

1. 使用儲存庫端點更新 .yarnrc.yml 檔案中`npmRegistryServer`的值。

   ```
   yarn config set npmRegistryServer "https://{{my_domain}}-{{111122223333}}.d.codeartifact.{{region}}.amazonaws.com/npm/{{my_repo}}/"
   ```

1. 擷取 CodeArtifact 授權字符並將其存放在 環境變數中。
**注意**  
下列命令適用於 macOS 或 Linux 機器。如需在 Windows 機器上設定環境變數的資訊，請參閱 [使用 環境變數傳遞身分驗證字符](tokens-authentication.md#env-var)。
   + 以您的 CodeArtifact 網域名稱取代 {{my\_domain}}。
   + 以網域擁有者 AWS 的帳戶 ID 取代 {{111122223333}}。如果您要存取您擁有之網域中的儲存庫，則不需要包含 `--domain-owner`。如需詳細資訊，請參閱[跨帳戶網域](domain-overview.md#domain-overview-cross-account)。
   + 將 {{my\_repo}} 取代為您的 CodeArtifact 儲存庫名稱。

   ```
   export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain {{my_domain}} --domain-owner {{111122223333}} --query authorizationToken --output text`
   ```

1. 使用 `yarn config set`命令將 CodeArtifact 身分驗證字符新增至 .yarnrc.yml 檔案。將下列命令中的 URL 取代為步驟 2 中的儲存庫端點 URL。

   ```
   yarn config set 'npmRegistries["https://{{my_domain}}-{{111122223333}}.d.codeartifact.{{region}}.amazonaws.com/npm/{{my_repo}}/"].npmAuthToken' "${CODEARTIFACT_AUTH_TOKEN}"
   ```

1. 使用 `yarn config set`命令將 的值設定為 `npmAlwaysAuth` `true`。將下列命令中的 URL 取代為步驟 2 中的儲存庫端點 URL。

   ```
   yarn config set 'npmRegistries["https://{{my_domain}}-{{111122223333}}.d.codeartifact.{{region}}.amazonaws.com/npm/{{my_repo}}/"].npmAlwaysAuth' "true"
   ```

設定後，您的 .yarnrc.yml 組態檔案應具有類似下列程式碼片段的內容。

```
npmRegistries:
  "https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/":
    npmAlwaysAuth: true
    npmAuthToken: eyJ2ZXI...

npmRegistryServer: "https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/npm/my_repo/"
```

您也可以使用 `yarn config`命令來檢查 `npmRegistries`和 的值`npmRegistryServer`。