Skriva azd hooks i Python, JavaScript, TypeScript eller .NET

Azure Developer CLI-hooksystemet (azd) stöder Python, JavaScript, TypeScript och .NET utöver Bash och PowerShell. azd identifierar automatiskt språket från filtillägget, hanterar beroenden och kör skriptet utan att någon extra konfiguration krävs.

Med hooks kan du köra anpassad logik vid viktiga punkter i azd livscykeln, till exempel före etablering, efter distribution med mera. Allmän information om krokar, inklusive tillgängliga hook-händelser och konfigurationsalternativ, finns i Anpassa arbetsflöden med hjälp av kommando- och händelsekrokar.

Prerequisites

Språkidentifiering

Peka en krok på en skriptfil i azure.yamloch azd härleder språket från filnamnstillägget. Om tillägget är tvetydigt eller saknas anger du språket explicit med fältet kind :

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

Python-krokar

Om du vill skriva en Python-krok skapar du en .py fil och refererar till den i din azure.yaml. Placera en requirements.txt eller pyproject.toml i samma katalog som skriptet eller en överordnad katalog. azd går upp i katalogträdet från skriptplatsen för att hitta den närmaste projektfilen, skapar en virtuell miljö, installerar beroenden och kör skriptet.

Exempel på katalogstruktur

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

Exempelkonfiguration

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

Python-specifik konfiguration

Använd blocket config för att åsidosätta standardnamnet för den virtuella miljön.

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

JavaScript- och TypeScript-krokar

Om du vill skriva JavaScript- eller TypeScript-krokar skapar du en .js eller .ts en fil och refererar till den i din azure.yaml. Placera en package.json i samma katalog som skriptet eller en överordnad katalog. azd kör npm install (eller pakethanteraren som anges i config blocket) och kör skriptet. TypeScript-skript körs via npx tsx utan kompileringssteg eller tsconfig.json behövs.

Exempel på katalogstruktur

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

Exempelkonfiguration

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

JavaScript- och TypeScript-konfiguration

Använd blocket config för att ange en önskad pakethanterare.

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

.NET-krokar

Två lägen stöds för .NET-krokar:

  • Projektläge: Om en .csproj, .fsproj, eller .vbproj finns i samma katalog som skriptet eller en överordnad katalog, azd körs dotnet restore och dotnet build automatiskt.
  • Enfilsläge: På .NET 10+ körs fristående filer direkt via dotnet run script.cs utan en projektfil.

Exempel på katalogstruktur

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

Exempelkonfiguration

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

. NET-specifik konfiguration

Ange byggkonfigurationen och målramverket genom att använda config blocket:

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

Åsidosätt arbetskatalogen

Ange arbetskatalogen för en krok med hjälp av fältet dir. Den här konfigurationen är användbar när projektroten skiljer sig från skriptplatsen:

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

Blanda språk och format

Använd olika språk för olika hookar i samma azure.yaml-fil. Du kan också kombinera flerspråkiga hooks med plattformsspecifika åsidosättningar.

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

Begär hjälp

Information om hur du skickar in en bugg, begär hjälp eller föreslår en ny funktion för Azure Developer CLI finns på sidan troubleshooting and support.