Mengkonfigurasi pengaturan build monorepo - AWS Amplify Hosting

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

Mengkonfigurasi pengaturan build monorepo

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.

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

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_MONOREPO_APP_ROOT.

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.

buildpathAtribut diatur / untuk menjalankan dan membangun aplikasi dari root proyek monorepo. baseDirectoryAtribut adalah jalur relatif daribuildpath.

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_MONOREPO_APP_ROOT

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_MONOREPO_APP_ROOT secara otomatis selama deployment

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.

  2. Pilih Buat aplikasi baru di sudut kanan atas.

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

  4. Di halaman Tambahkan cabang repositori, lakukan langkah berikut:

    1. Pilih nama repositori Anda dari daftar.

    2. Pilih nama cabang yang akan digunakan.

    3. Pilih Aplikasi saya adalah monorepo

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

    5. Pilih Berikutnya.

  5. 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.

  6. Pilih Berikutnya.

  7. Di halaman Tinjauan, pilih Simpan dan deploy.

Mengatur variabel lingkungan AMPLIFY_MONOREPO_APP_ROOT untuk aplikasi yang ada

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_MONOREPO_APP_ROOT untuk aplikasi yang ada
  1. Masuk ke Konsol Manajemen AWS dan buka konsol Amplify.

  2. Pilih nama aplikasi yang variabel lingkungannya akan diatur.

  3. Di panel navigasi, pilih Hosting, lalu pilih Variabel lingkungan.

  4. Di halaman Variabel lingkungan, pilih Kelola variabel.

  5. Di bagian Kelola variabel, lakukan langkah-langkah berikut:

    1. Pilih Tambahkan baru.

    2. Untuk Variabel, masukkan kunci AMPLIFY_MONOREPO_APP_ROOT.

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

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

  6. Pilih Simpan.

Mengkonfigurasi aplikasi Turborepo dan pnpm monorepo

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 kehoisted. 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.

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