Psaní háků azd v Pythonu, JavaScriptu, TypeScriptu nebo .NET

Systém háku Azure Developer CLI (azd) podporuje kromě Bash a PowerShellu také Python, JavaScript, TypeScript a .NET . azd automaticky rozpozná jazyk z přípony souboru, spravuje závislosti a spouští skript bez nutnosti další konfigurace.

Hooky umožňují spouštět vlastní logiku azd v klíčových bodech životního cyklu, například před zřízením, po nasazení a dalších. Obecné informace o hácích, včetně dostupných událostí háku a možností konfigurace, najdete v tématu Přizpůsobení pracovních postupů pomocí příkazů a háků událostí.

Předpoklady

Detekce jazyka

Nasměrujte háček na soubor skriptu v azure.yaml a azd odvodí jazyk z přípony tohoto souboru. Pokud je rozšíření nejednoznačné nebo chybí, zadejte jazyk explicitně s polem kind :

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

Háky Pythonu

Pokud chcete napsat háček Pythonu, vytvořte .py soubor a odkazujte na něj ve svém azure.yaml. Umístěte requirements.txt nebo pyproject.toml do stejného adresáře jako skript nebo nadřazeného adresáře. azd prochází adresářový strom od umístění skriptu, aby našel nejbližší soubor projektu, vytvoří virtuální prostředí, nainstaluje závislosti a spustí skript.

Příklad adresářové struktury

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

Příklad konfigurace

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

Konfigurace specifická pro Python

config Pomocí bloku můžete přepsat výchozí název virtuálního prostředí.

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

Háky JavaScriptu a TypeScriptu

Pokud chcete napsat javascriptové nebo typescriptové háčky, vytvořte soubor .js nebo .ts a odkažte na něj ve svém azure.yaml. Umístěte package.json do stejného adresáře jako váš skript nebo nadřazeného adresáře. azd spustí npm install (nebo správce balíčků zadaný v config bloku) a spustí skript. Skripty TypeScriptu se spouštějí bez npx tsx kroku kompilace nebo tsconfig.json nejsou potřeba.

Příklad adresářové struktury

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

Příklad konfigurace

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

Konfigurace JavaScriptu a TypeScriptu

config Pomocí bloku určete upřednostňovaného správce balíčků.

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

Háky .NET

Pro háky .NET se podporují dva režimy:

  • Režim projektu: Pokud ve stejném adresáři jako skript nebo v některém z nadřazených adresářů existuje .csproj, .fsproj, nebo .vbproj, azd automaticky spustí dotnet restore a dotnet build.
  • Režim jednoho souboru: V .NET 10 a novějších, samostatné .cs soubory běží přímo prostřednictvím dotnet run script.cs bez souboru projektu.

Příklad adresářové struktury

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

Příklad konfigurace

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

. Konfigurace specifická pro NET

Pomocí bloku config zadejte konfiguraci sestavení a cílový rámec.

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

Překonfigurovat pracovní adresář

Pomocí pole nastavte pracovní adresář pro háček dir . Tato konfigurace je užitečná, když se kořen projektu liší od umístění skriptu:

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

Mix jazyků a formátů

Pro různé háky ve stejném azure.yaml souboru používejte různé jazyky. Můžete také kombinovat vícejazyčné hooky s úpravami specifickými pro platformu.

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

Požádat o pomoc

Informace o tom, jak nahlásit chybu, požádat o pomoc nebo navrhnout novou funkci pro rozhraní příkazového řádku vývojářů Azure, najdete na stránce řešení problémů a podpora.