Pisanie hooków azd w języku Python, JavaScript, TypeScript lub .NET

System hooków w Azure Developer CLI (azd) obsługuje Python, JavaScript, TypeScript, .NET oraz środowiska Bash i PowerShell. azd automatycznie wykrywa język z rozszerzenia pliku, zarządza zależnościami i uruchamia skrypt bez konieczności dodatkowej konfiguracji.

Haczyki umożliwiają uruchamianie logiki niestandardowej w kluczowych punktach cyklu życia azd, takich jak przed aprowizowaniem, po wdrożeniu i więcej. Aby uzyskać ogólne informacje na temat punktów zaczepienia, w tym dostępnych zdarzeń punktów zaczepienia i opcji konfiguracji, zobacz Dostosowywanie przepływów pracy przy użyciu poleceń i punktów zaczepienia zdarzeń.

Wymagania wstępne

Wykrywanie języka

Wskaż plik skryptu w azure.yaml, a azd wywnioskuje język na podstawie rozszerzenia pliku. Jeśli rozszerzenie jest niejednoznaczne lub brakuje go, określ język jawnie z polem kind :

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

Haki języka Python

Aby napisać hak Pythona, utwórz plik .py i odnieś się do niego w azure.yaml. Umieść requirements.txt lub pyproject.toml w tym samym katalogu, co skrypt, lub w katalogu nadrzędnym. azd przechodzi po drzewie katalogów od lokalizacji skryptu, aby znaleźć najbliższy plik projektu, tworzy środowisko wirtualne, instaluje zależności i uruchamia skrypt.

Przykładowa struktura katalogów

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

Przykładowa konfiguracja

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

Konfiguracja specyficzna dla języka Python

Użyj bloku config, aby zmienić domyślną nazwę środowiska wirtualnego.

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

JavaScript i TypeScript Hooks

Aby napisać hooks w języku JavaScript lub TypeScript, utwórz plik .js lub .ts i odwołaj się do niego w pliku azure.yaml. Umieść element package.json w tym samym katalogu co twój skrypt lub w katalogu nadrzędnym skryptu. azd uruchamia npm install (lub menedżera pakietów określonego w bloku config) i wykonuje skrypt. Skrypty języka TypeScript są uruchamiane za pomocą polecenia npx tsx bez kroku kompilacji ani tsconfig.json wymaganego.

Przykładowa struktura katalogów

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

Przykładowa konfiguracja

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

Konfiguracja języków JavaScript i TypeScript

config Użyj bloku, aby określić preferowany menedżer pakietów.

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

Interfejsy platformy .NET

Obsługiwane są dwa tryby dla haków .NET.

  • Tryb projektu: jeśli element .csproj, .fsprojlub .vbproj istnieje w tym samym katalogu co skrypt lub katalog nadrzędny, azd uruchamia dotnet restore i dotnet build automatycznie.
  • Tryb pojedynczego pliku: w programie .NET 10 lub nowszym samodzielne autonomiczne pliki mogą być uruchamiane .cs bezpośrednio przez dotnet run script.cs bez pliku projektu.

Przykładowa struktura katalogów

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

Przykładowa konfiguracja

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

. Konfiguracja specyficzna dla platformy NET

Określ konfigurację kompilacji i strukturę docelową config przy użyciu bloku:

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

Zastąp katalog roboczy

Ustaw katalog roboczy dla haczyka za pomocą pola dir. Ta konfiguracja jest przydatna, gdy katalog główny projektu różni się od lokalizacji skryptu:

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

Mieszanie języków i formatów

Użyj różnych języków dla różnych zaczepów w tym samym pliku azure.yaml. Można również połączyć wielojęzyczne haki z przesłonięciami specyficznymi dla platformy:

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

Zażądaj pomocy

Aby uzyskać informacje o tym, jak zgłosić usterkę, poprosić o pomoc lub zaproponować nową funkcję dla interfejsu wiersza polecenia dewelopera Azure, odwiedź stronę troubleshooting i pomoc techniczną.