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

Mengonfigurasi pengaturan build monorepo

Monorepo adalah tempat untuk menyimpan beberapa proyek atau layanan mikro dalam satu repositori. Anda dapat menggunakan Amplify untuk men-deploy aplikasi dalam 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. Ketika Anda men-deploy 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 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. Ketika ada amplify.yml file, pengaturannya menimpa pengaturan build yang disimpan di konsol Amplify.

Sintaks YAMAL spesifikasi build monorepo

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 nyatakan dalam spesifikasi build monorepo:

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 secara manual mengatur variabel AMPLIFY_MONOREPO_APP_ROOT lingkungan di bagian Variabel lingkungan dalam 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 men-deploy aplikasi monorepo dengan konsol Amplify
  1. Masuk ke, lalu buka AWS Management Console 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 pengaturan default atau menyesuaikan pengaturan build untuk aplikasi. Di bagian variabel Lingkungan, Amplify menetapkan 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

Ikuti langkah-langkah berikut untuk mengatur variabel AMPLIFY_MONOREPO_APP_ROOT lingkungan untuk aplikasi yang telah di-deploy ke Amplify atau telah dibuat menggunakan variabel lingkungan untuk aplikasi yang telah di-deploy ke Amplify atau telah dibuat menggunakan. CloudFormation

Untuk mengatur variabel lingkungan AMPLIFY_MONOREPO_APP_ROOT untuk aplikasi yang ada
  1. Masuk ke, lalu buka AWS Management Console 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