Escreva ganchos azd em Python, JavaScript, TypeScript ou .NET

O sistema de gancho da CLI do Desenvolvedor do Azure (azd) dá suporte a Python, JavaScript, TypeScript e .NET , além do Bash e do PowerShell. azd detecta automaticamente o idioma da extensão de arquivo, gerencia dependências e executa o script sem nenhuma configuração adicional necessária.

Os ganchos permitem executar a lógica personalizada em pontos-chave no ciclo de vida, como antes do azd provisionamento, após a implantação e muito mais. Para obter informações gerais sobre ganchos, incluindo eventos de gancho disponíveis e opções de configuração, consulte Personalizar fluxos de trabalho usando ganchos de comando e evento.

Prerequisites

Detecção de idioma

Aponte um hook para um arquivo de script em azure.yaml, e azd infere o idioma pela extensão do arquivo. Se a extensão for ambígua ou ausente, especifique o idioma explicitamente com o kind campo:

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

Ganchos do Python

Para escrever um hook do Python, crie um arquivo .py e faça referência a ele em seu azure.yaml. Coloque um requirements.txt ou pyproject.toml no mesmo diretório do script ou em um diretório pai. azd percorre a árvore de diretório do local do script para localizar o arquivo de projeto mais próximo, cria um ambiente virtual, instala dependências e executa o script.

Estrutura de diretório de exemplo

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

Configuração de exemplo

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

Configuração específica do Python

Use o config bloco para substituir o nome do ambiente virtual padrão.

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

Ganchos JavaScript e TypeScript

Para escrever ganchos JavaScript ou TypeScript, crie um arquivo .js ou um arquivo .ts e faça referência a ele em seu azure.yaml. Coloque um package.json no mesmo diretório que um script ou um diretório pai. azd executa npm install (ou o gerenciador de pacotes especificado no config bloco) e executa o script. Os scripts TypeScript são executados via npx tsx sem etapa de tsconfig.json e sem necessidade de compilação.

Estrutura de diretório de exemplo

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

Configuração de exemplo

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

Configuração de JavaScript e TypeScript

Use o config bloco para especificar um gerenciador de pacotes preferencial.

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

Ganchos do .NET

Há suporte para dois modos para ganchos .NET:

  • Modo de projeto: se um .csproj, .fsprojou .vbproj existe no mesmo diretório que o script ou um diretório pai, azd é executado dotnet restore e dotnet build automaticamente.
  • Modo de arquivo único: No .NET 10+, arquivos independentes .cs rodam diretamente por meio de dotnet run script.cs sem um arquivo de projeto.

Estrutura de diretório de exemplo

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

Configuração de exemplo

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

Configuração específica do .NET

Especifique a configuração de build e a estrutura de destino usando o config bloco:

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

** Sobrescrever o diretório de trabalho

Defina o diretório de trabalho para um gancho usando o campo dir. Essa configuração é útil quando a raiz do projeto difere do local do script:

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

Misturar idiomas e formatos

Use idiomas diferentes para hooks diferentes no mesmo azure.yaml arquivo. Você também pode combinar ganchos de vários idiomas com substituições específicas da plataforma:

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

Solicitar ajuda

Para obter informações sobre como arquivar um bug, solicitar ajuda ou propor um novo recurso para a CLI do Desenvolvedor do Azure, visite a página troubleshooting e suporte.