Azd-hooks schrijven in Python, JavaScript, TypeScript of .NET

Het azure Developer CLI-hooksysteem ondersteuntazdnaast Bash en PowerShell python, JavaScript, TypeScript en .NET . azd detecteert automatisch de taal uit de bestandsextensie, beheert afhankelijkheden en voert het script uit zonder extra configuratie vereist.

Met Hooks kunt u aangepaste logica uitvoeren op belangrijke punten in de azd levenscyclus, zoals voor het inrichten, na de implementatie en meer. Zie Werkstromen aanpassen met behulp van opdracht- en gebeurtenishookhaken voor algemene informatie over hooks, inclusief beschikbare hook-gebeurtenissen en configuratieopties.

Prerequisites

Taaldetectie

Wijs een hook aan bij een scriptbestand in azure.yamlen azd leid de taal af van de bestandsextensie. Als de extensie niet eenduidig is of ontbreekt, geeft u de taal expliciet op met het kind veld:

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

Python hooks

Als u een Python-hook wilt schrijven, maakt u een .py bestand en verwijst u ernaar in uw azure.yaml. Plaats een requirements.txt of pyproject.toml in dezelfde map als het script of een oudermap. azd loopt vanuit de mapstructuur omhoog vanaf de scriptlocatie om het dichtstbijzijnde projectbestand op te zoeken, maakt een virtuele omgeving, installeert afhankelijkheden en voert het script uit.

Voorbeeld van mapstructuur

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

Voorbeeldconfiguratie

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

Python-specifieke configuratie

Gebruik het config blok om de standaardnaam van de virtuele omgeving te overschrijven.

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

JavaScript- en TypeScript-hooks

Als u JavaScript- of TypeScript-hooks wilt schrijven, maakt u een .js- of .ts-bestand aan en verwijst ernaar in uw azure.yaml. Plaats een package.json bestand in dezelfde map als uw script of in een bovenliggende map. azd voert npm install uit (of de pakketbeheerder die is opgegeven in het config blok) en voert het script uit. TypeScript scripts worden via npx tsx gemaakt zonder compileerstap of tsconfig.json nodig.

Voorbeeld van mapstructuur

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

Voorbeeldconfiguratie

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

JavaScript- en TypeScript-configuratie

Gebruik het config blok om een voorkeurspakketbeheer op te geven.

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

.NET hooks

Er worden twee modi ondersteund voor .NET-hooks:

  • Projectmodus: Als een .csproj, .fsproj, of .vbproj bestaat in dezelfde map als het script of een bovenliggende map, azd voert dotnet restore en dotnet build automatisch uit.
  • Modus voor één bestand: op .NET 10+ worden zelfstandige .cs bestanden rechtstreeks uitgevoerd zonder dotnet run script.cs een projectbestand.

Voorbeeld van mapstructuur

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

Voorbeeldconfiguratie

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

. NET-specifieke configuratie

Geef de buildconfiguratie en het doelframework op met behulp van het config blok:

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

De werkmap overschrijven

Stel de werkmap voor een hook in met behulp van het dir veld. Deze configuratie is handig wanneer de hoofdmap van het project verschilt van de scriptlocatie:

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

Talen en indelingen combineren

Gebruik verschillende talen voor verschillende hooks in hetzelfde azure.yaml bestand. U kunt ook meertalige hooks combineren met platform-specifieke overschrijvingen.

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

Hulp vragen

Ga naar de pagina roubleshooting en ondersteuning voor informatie over het indienen van een bug, hulp vragen of een nieuwe functie voorstellen voor de Azure Developer CLI.