

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mengkonfigurasi pengaturan build monorepo
<a name="monorepo-configuration"></a>

Monorepo adalah tempat untuk menyimpan beberapa proyek atau layanan mikro dalam satu repositori. Anda dapat menggunakan Amplify Hosting untuk menyebarkan aplikasi di monorepo tanpa membuat beberapa konfigurasi build atau konfigurasi cabang.

Amplify mendukung aplikasi dalam monorepos generik serta aplikasi di monorepos yang dibuat menggunakan ruang kerja npm, ruang kerja pnpm, ruang kerja Yarn, Nx, dan Turborepo. Saat menerapkan aplikasi, Amplify secara otomatis mendeteksi alat build monorepo yang Anda gunakan. Amplify secara otomatis menerapkan pengaturan build untuk aplikasi di ruang kerja npm, ruang kerja Yarn, atau Nx. Aplikasi Turborepo dan pnpm memerlukan konfigurasi tambahan. Untuk informasi selengkapnya, lihat [Mengkonfigurasi aplikasi Turborepo dan pnpm monorepo](#turborepo-pnpm-monorepo-configuration).

Anda dapat menyimpan pengaturan build untuk monorepo di konsol Amplify atau Anda dapat mengunduh `amplify.yml` file dan menambahkannya ke root repositori Anda. Amplify menerapkan pengaturan yang disimpan di konsol ke semua cabang, kecuali ditemukan file `amplify.yml` di repositori Anda. Saat `amplify.yml` file ada, pengaturannya akan mengganti setelan build apa pun yang disimpan di konsol Amplify.

## Monorepo membangun spesifikasi referensi sintaks YAMAL
<a name="monorepo-yml-syntax"></a>

Sintaks YAML untuk spesifikasi build monorepo tidak sama dengan sintaks YAML untuk repo yang berisi satu aplikasi. Untuk monorepo, Anda menyatakan setiap proyek dalam daftar aplikasi. Anda harus memberikan `appRoot` kunci tambahan berikut untuk setiap aplikasi yang Anda deklarasikan dalam spesifikasi build monorepo Anda:

**appRoot**  
Root, dalam repositori, tempat aplikasi dimulai. Kunci ini harus ada, dan memiliki nilai yang sama dengan variabel lingkungan `AMPLIFY_MONOREPO_APP_ROOT`. Untuk langkah-langkah seputar pengaturan variabel lingkungan ini, lihat [Mengatur variabel lingkungan AMPLIFY\$1MONOREPO\$1APP\$1ROOT](#setting-monorepo-environment-variable).

Contoh spesifikasi build monorepo berikut menjelaskan cara menyatakan beberapa aplikasi Amplify di repo yang sama. Dua aplikasi, `react-app` dan `angular-app`, dinyatakan dalam daftar `applications`. Kunci `appRoot` untuk setiap aplikasi menunjukkan bahwa aplikasi terletak di folder root `apps` dalam repo.

`buildpath`Atribut diatur `/` untuk menjalankan dan membangun aplikasi dari root proyek monorepo. `baseDirectory`Atribut adalah jalur relatif dari`buildpath`.

### Sintaks YAML spesifikasi build monorepo
<a name="monorepo-build-yaml-syntax"></a>

```
version: 1
applications:
  - appRoot: apps/react-app
    env:
      variables:
        key: value
    backend:
      phases:
        preBuild:
          commands:
            - *enter command*
        build:
          commands:
            - *enter command*
        postBuild:
            commands:
            - *enter command*
    frontend:
      buildPath: / # Run install and build from the monorepo project root
      phases:
        preBuild:
          commands:
            - *enter command*
            - *enter command*
        build:
          commands:
            - *enter command*
      artifacts:
        files:
            - location
            - location
        discard-paths: yes
        baseDirectory: location
      cache:
        paths:
            - path
            - path
    test:
      phases:
        preTest:
          commands:
            - *enter command*
        test:
          commands:
            - *enter command*
        postTest:
          commands:
            - *enter command*
      artifacts:
        files:
            - location
            - location
        configFilePath: *location*
        baseDirectory: *location*
  - appRoot: apps/angular-app
    env:
      variables:
        key: value
    backend:
      phases:
        preBuild:
          commands:
            - *enter command*
        build:
          commands:
            - *enter command*
        postBuild:
            commands:
            - *enter command*
    frontend:
      phases:
        preBuild:
          commands:
            - *enter command*
            - *enter command*
        build:
          commands:
            - *enter command*
      artifacts:
        files:
            - location
            - location
        discard-paths: yes
        baseDirectory: location
      cache:
        paths:
            - path
            - path
    test:
      phases:
        preTest:
          commands:
            - *enter command*
        test:
          commands:
            - *enter command*
        postTest:
          commands:
            - *enter command*
      artifacts:
        files:
            - location
            - location
        configFilePath: *location*
        baseDirectory: *location*
```

Aplikasi yang menggunakan contoh spesifikasi build berikut, akan dibangun di bawah root proyek dan artefak build akan ditempatkan di`/packages/nextjs-app/.next`.

```
applications:
  - frontend:
      buildPath: '/'  # run install and build from monorepo project root
      phases:
        preBuild:
          commands:
            - npm install
        build:
          commands:
            - npm run build --workspace=nextjs-app
      artifacts:
        baseDirectory: packages/nextjs-app/.next
        files:
          - '**/*'
      cache:
        paths:
          - node_modules/**/*
    appRoot: packages/nextjs-app
```

## Mengatur variabel lingkungan AMPLIFY\$1MONOREPO\$1APP\$1ROOT
<a name="setting-monorepo-environment-variable"></a>

Saat Anda men-deploy aplikasi yang disimpan dalam monorepo, variabel lingkungan `AMPLIFY_MONOREPO_APP_ROOT` aplikasi harus memiliki nilai yang sama dengan path root aplikasi, bergantung pada root repositori. Misalnya, monorepo bernama `ExampleMonorepo` dengan folder root bernama `apps`, yang berisi `app1`, `app2`, dan `app3` memiliki struktur direktori berikut:

```
ExampleMonorepo
  apps
    app1
    app2
    app3
```

Dalam contoh ini, nilai variabel lingkungan `AMPLIFY_MONOREPO_APP_ROOT` untuk `app1` adalah `apps/app1`.

Ketika Anda men-deploy aplikasi monorepo menggunakan konsol Amplify, konsol secara otomatis menetapkan variabel lingkungan `AMPLIFY_MONOREPO_APP_ROOT` menggunakan nilai yang Anda tentukan untuk path ke root aplikasi. Namun, jika aplikasi monorepo Anda sudah ada di Amplify atau di-deploy menggunakan AWS CloudFormation, Anda harus menyetel variabel `AMPLIFY_MONOREPO_APP_ROOT` lingkungan secara manual di **bagian** Variabel Lingkungan di konsol Amplify.

### Mengatur variabel lingkungan AMPLIFY\$1MONOREPO\$1APP\$1ROOT secara otomatis selama deployment
<a name="setting-monorepo-environmnet-variable-automatically"></a>

Instruksi berikut menjelaskan cara men-deploy aplikasi monorepo dengan konsol Amplify. Amplify secara otomatis menetapkan variabel lingkungan `AMPLIFY_MONOREPO_APP_ROOT` menggunakan folder root aplikasi yang Anda tentukan di konsol.

**Untuk menerapkan aplikasi monorepo dengan konsol Amplify**

1. Masuk ke Konsol Manajemen AWS dan buka konsol [Amplify](https://console.aws.amazon.com/amplify/).

1. Pilih **Buat aplikasi baru** di sudut kanan atas.

1. **Pada halaman **Mulai membangun dengan Amplify**, pilih penyedia Git Anda, lalu pilih Berikutnya.**

1. Di halaman **Tambahkan cabang repositori**, lakukan langkah berikut:

   1. Pilih nama repositori Anda dari daftar.

   1. Pilih nama cabang yang akan digunakan.

   1. Pilih **Aplikasi saya adalah monorepo**

   1. Masukkan path ke aplikasi di monorepo Anda, misalnya, **apps/app1**.

   1. Pilih **Berikutnya**.

1. Di halaman **Pengaturan aplikasi**, Anda dapat menggunakan setelan default atau menyesuaikan setelan build untuk aplikasi Anda. Di bagian **variabel Lingkungan**, Amplify menyetel `AMPLIFY_MONOREPO_APP_ROOT` ke jalur yang Anda tentukan di langkah 4d.

1. Pilih **Berikutnya**.

1. Di halaman **Tinjauan**, pilih **Simpan dan deploy**.

### Mengatur variabel lingkungan AMPLIFY\$1MONOREPO\$1APP\$1ROOT untuk aplikasi yang ada
<a name="setting-monorepo-environment-variable-manually"></a>

Gunakan petunjuk berikut untuk menyetel variabel `AMPLIFY_MONOREPO_APP_ROOT` lingkungan secara manual untuk aplikasi yang sudah di-deploy ke Amplify, atau telah dibuat menggunakan. CloudFormation

**Untuk mengatur variabel lingkungan AMPLIFY\$1MONOREPO\$1APP\$1ROOT untuk aplikasi yang ada**

1. Masuk ke Konsol Manajemen AWS dan buka konsol [Amplify](https://console.aws.amazon.com/amplify/).

1. Pilih nama aplikasi yang variabel lingkungannya akan diatur.

1. Di panel navigasi, pilih **Hosting**, lalu pilih **Variabel lingkungan**.

1. Di halaman **Variabel lingkungan**, pilih **Kelola variabel**.

1. Di bagian **Kelola variabel**, lakukan langkah-langkah berikut:

   1. Pilih **Tambahkan baru**.

   1. Untuk **Variabel**, masukkan kunci `AMPLIFY_MONOREPO_APP_ROOT`.

   1. Untuk **Nilai**, masukkan path ke aplikasi, misalnya **apps/app1**.

   1. Untuk **Cabang**, Amplify secara default menerapkan variabel lingkungan ke semua cabang.

1. Pilih **Simpan**.

## Mengkonfigurasi aplikasi Turborepo dan pnpm monorepo
<a name="turborepo-pnpm-monorepo-configuration"></a>

Alat pembuatan monorepo ruang kerja Turborepo dan pnpm mendapatkan informasi konfigurasi dari file. `.npmrc` Saat Anda menerapkan aplikasi monorepo yang dibuat dengan salah satu alat ini, Anda harus memiliki `.npmrc` file di direktori root proyek Anda.

Dalam `.npmrc` file, atur linker untuk menginstal paket Node ke`hoisted`. Anda dapat menyalin baris berikut ke file Anda.

```
node-linker=hoisted
```

*Untuk informasi selengkapnya tentang `.npmrc` file dan pengaturan, lihat [pnpm .npmrc di dokumentasi pnpm](https://pnpm.io/next/npmrc).*

Pnpm tidak disertakan dalam container build default Amplify. Untuk ruang kerja pnpm dan aplikasi Turborepo, Anda harus menambahkan perintah untuk menginstal pnpm di fase pengaturan build aplikasi Anda. `preBuild`

Contoh kutipan berikut dari spesifikasi build menunjukkan `preBuild` fase dengan perintah untuk menginstal pnpm.

```
version: 1
applications:
  - frontend:
      phases:
        preBuild:
          commands:
            - npm install -g pnpm
```