Azd kancalarını Python, JavaScript, TypeScript veya .NET'te yazın

Azure Geliştirici CLI (azd) kanca sistemi, Bash ve PowerShell'e ek olarak Python, JavaScript, TypeScript ve .NET'i destekler. azd dosya uzantısından dili otomatik olarak algılar, bağımlılıkları yönetir ve betiği ek yapılandırma gerektirmeden çalıştırır.

Kancalar, sağlamadan önce, dağıtımdan sonra ve daha fazlası gibi yaşam döngüsündeki azd önemli noktalarda özel mantık çalıştırmanıza olanak sağlar. Kullanılabilir kanca olayları ve yapılandırma seçenekleri de dahil olmak üzere kancalar hakkında genel bilgi için bkz. Komut ve olay kancalarını kullanarak iş akışlarını özelleştirme.

Prerequisites

Dil algılama

Bir kanca ile azure.yaml içindeki bir betik dosyasını işaretleyin, ve azd dili dosya uzantısından çıkarır. Uzantı belirsiz veya eksikse, dili şu alanla kind açıkça belirtin:

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

Python kancaları

Python kancası yazmak için bir .py dosya oluşturun ve dosyanızda referans alın azure.yaml. Bir requirements.txt veya pyproject.toml öğesini betikle aynı dizine veya üst dizine yerleştirin. azd betiğin konumundan başlayarak dizin ağacını yukarı doğru tarar, en yakın proje dosyasını bulur, bir sanal ortam oluşturur, bağımlılıkları yükler ve betiği çalıştırır.

Örnek dizin yapısı

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

Örnek yapılandırma

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

Python'a özgü yapılandırma

config Varsayılan sanal ortam adını geçersiz kılmak için bloğunu kullanın.

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

JavaScript ve TypeScript kancaları

JavaScript veya TypeScript hook'ları yazmak için bir .js veya .ts dosyası oluşturun ve azure.yaml dosyanızda referans verin. Betiğinizle aynı dizine veya üst dizine package.json yerleştirin. azdkomutunu (veya blokta belirtilen paket yöneticisininpm install) çalıştırır config ve betiği yürütür. TypeScript betikleri, derleme adımı ya da gereklilik olmaksızın npx tsx aracılığıyla tsconfig.json kullanılarak çalıştırılır.

Örnek dizin yapısı

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

Örnek yapılandırma

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

JavaScript ve TypeScript yapılandırması

Tercih edilen config paket yöneticisini belirtmek için bloğunu kullanın.

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

.NET bağlantıları

.NET kancaları için iki mod desteklenir:

  • Proje modu: Eğer bir .csproj, .fsproj veya .vbproj betikle veya üst dizinlerinden biriyle aynı dizinde varsa, azd otomatik olarak dotnet restore ve dotnet build çalıştırır.
  • Tek dosya modu: .NET 10+ üzerinde, tek başına .cs dosyalar proje dosyası olmadan doğrudan üzerinden dotnet run script.cs çalıştırılır.

Örnek dizin yapısı

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

Örnek yapılandırma

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

. NET'e özgü yapılandırma

Derleme yapılandırmasını ve hedef çerçeveyi config bloğunu kullanarak belirleyin.

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

Çalışma dizinini geçersiz kılma

Kancanın çalışma dizinini ayarlamak için dir alanını kullanın. Bu yapılandırma, proje kökü betik konumundan farklı olduğunda kullanışlıdır:

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

Dilleri ve biçimleri karıştırma

Aynı azure.yaml dosyadaki farklı kancalar için farklı diller kullanın. Çok dilli bağlantıları platforma özgü özelleştirmelerle de birleştirebilirsiniz:

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

Yardım isteme

Azure Geliştirici CLI'si için hata oluşturma, yardım isteme veya yeni bir özellik önerme hakkında bilgi için lütfen troubleshooting and support sayfasını ziyaret edin.