Tulis hooks azd di Python, JavaScript, TypeScript, atau .NET

Sistem hook Azure Developer CLI (azd) mendukung Python, JavaScript, TypeScript, dan .NET selain Bash dan PowerShell. azd secara otomatis mendeteksi bahasa dari ekstensi file, mengelola dependensi, dan menjalankan skrip tanpa konfigurasi tambahan yang diperlukan.

Hooks memungkinkan Anda menjalankan logika kustom di titik kunci dalam siklus hidup azd, seperti sebelum provisioning, setelah penyebaran, dan lain sebagainya. Untuk informasi umum tentang hook, termasuk event hook dan opsi konfigurasi yang tersedia, lihat Menyesuaikan alur kerja menggunakan command dan event hook.

Prasyarat

Deteksi bahasa

Arahkan hook pada file skrip di azure.yaml, dan azd menyimpulkan bahasa dari ekstensi file. Jika ekstensi ambigu atau hilang, tentukan bahasa secara eksplisit dengan kind bidang :

hooks:
  preprovision:
    run: ./hooks/setup.py
    kind: python    # explicit — overrides extension inference

Pengait Python

Untuk menulis hook Python, buat sebuah .py file dan cantumkan dalam azure.yaml. Tempatkan requirements.txt atau pyproject.toml di direktori yang sama dengan skrip atau direktori induk. azd berjalan di atas pohon direktori dari lokasi skrip untuk menemukan file proyek terdekat, membuat lingkungan virtual, menginstal dependensi, dan menjalankan skrip.

Contoh struktur direktori

hooks/
├── setup.py
└── requirements.txt

Konfigurasi contoh

hooks:
  preprovision:
    run: ./hooks/setup.py

Konfigurasi khusus Python

Gunakan blok config untuk mengganti nama default lingkungan virtual.

hooks:
  preprovision:
    run: ./hooks/setup.py
    config:
      virtualEnvName: .venv   # override default naming

Hooks JavaScript dan TypeScript

Untuk menulis kait JavaScript atau TypeScript, buat file .js atau .ts dan referensikan di azure.yaml. Tempatkan package.json di direktori yang sama dengan skrip Anda atau direktori induk. azd menjalankan npm install (atau manajer paket yang ditentukan dalam blok config) dan menjalankan skrip. Skrip TypeScript berjalan melalui npx tsx tanpa langkah kompilasi atau tsconfig.json diperlukan.

Contoh struktur direktori

hooks/
├── seed.ts
└── package.json

Konfigurasi contoh

hooks:
  postdeploy:
    run: ./hooks/seed.ts

Konfigurasi JavaScript dan TypeScript

config Gunakan blok untuk menentukan manajer paket pilihan.

hooks:
  postdeploy:
    run: ./hooks/seed.ts
    config:
      packageManager: pnpm    # npm | pnpm | yarn

Pengait .NET

Dua mode didukung untuk kait .NET:

  • Mode proyek: Jika .csproj, .fsproj, atau .vbproj ada di direktori yang sama dengan skrip atau direktori induk, azd berjalan dotnet restore dan dotnet build secara otomatis.
  • Mode file tunggal: Pada .NET 10+, file mandiri .cs berjalan langsung melalui dotnet run script.cs tanpa file proyek.

Contoh struktur direktori

hooks/
├── migrate.cs
└── migrate.csproj   # optional — omit for single-file mode on .NET 10+

Konfigurasi contoh

hooks:
  postprovision:
    run: ./hooks/migrate.cs

Konfigurasi khusus .NET

Tentukan konfigurasi build dan kerangka kerja target dengan menggunakan config blok:

hooks:
  postprovision:
    run: ./hooks/migrate.cs
    config:
      configuration: Release  # Debug | Release
      framework: net10.0      # target framework

Gantikan direktori kerja

Atur direktori kerja untuk hook dengan menggunakan bidang dir. Konfigurasi ini berguna ketika akar proyek berbeda dari lokasi skrip:

hooks:
  preprovision:
    run: main.py
    dir: hooks/preprovision

Mencampur bahasa dan format

Gunakan bahasa yang berbeda untuk setiap hook dalam file yang sama azure.yaml. Anda juga dapat menggabungkan hook multi-bahasa dengan penimpaan khusus platform:

hooks:
  preprovision:
    run: ./hooks/setup.py

  postdeploy:
    run: ./hooks/seed.ts

  postprovision:
    run: ./hooks/migrate.cs

  predeploy:
    windows:
      run: ./hooks/build.ps1
    posix:
      run: ./hooks/build.sh

Minta bantuan

Untuk informasi tentang cara mengajukan bug, meminta bantuan, atau mengusulkan fitur baru untuk Azure Developer CLI, silakan kunjungi halaman troubleshooting dan dukungan.