Создавайте azd hooks на Python, JavaScript, TypeScript или .NET

Система хуков CLI разработчика Azure (azd) поддерживает Python, JavaScript, TypeScript и .NET, в дополнение к Bash и PowerShell. azd автоматически обнаруживает язык из расширения файла, управляет зависимостями и запускает скрипт без дополнительной конфигурации.

Перехватчики позволяют выполнять пользовательскую логику в ключевых точках azd жизненного цикла, таких как перед подготовкой, после развертывания и многое другое. Общие сведения о перехватчиках, включая доступные события перехватчика и параметры конфигурации, см. в разделе "Настройка рабочих процессов" с помощью команд и перехватчиков событий.

Необходимые условия

Распознавание языка

Наведите указатель на файл azure.yamlскрипта и azd введите язык из расширения файла. Если расширение неоднозначно или отсутствует, укажите язык явным образом с полем kind :

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

Хуки Python

Чтобы написать перехватчик Python, создайте .py файл и укажите на него в вашем azure.yaml. Поместите requirements.txt или pyproject.toml в тот же каталог, что и сценарий, или в родительский каталог. azd Выполняет обход дерева каталогов из расположения скрипта, чтобы найти ближайший файл проекта, создает виртуальную среду, устанавливает зависимости и запускает скрипт.

Пример структуры каталогов

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

Пример конфигурации

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

Конфигурация для Python

Используйте config блок для переопределения имени виртуальной среды по умолчанию.

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

Перехватчики (хуки) JavaScript и TypeScript

Чтобы написать перехватчики JavaScript или TypeScript, создайте файл .js или .ts и укажите его в вашем azure.yaml. package.json Поместите его в тот же каталог, что и сценарий или родительский каталог. azd запускает npm install (или диспетчер пакетов, указанный в блоке config ) и выполняет скрипт. Скрипты TypeScript выполняются без npx tsx шага компиляции или tsconfig.json необходимости.

Пример структуры каталогов

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

Пример конфигурации

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

Конфигурация JavaScript и TypeScript

Используйте config блок для указания предпочтительного диспетчера пакетов.

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

Перехватчики .NET

В .NET поддерживаются два режима для хуков:

  • Режим проекта: если .csproj, .fsproj, или .vbproj существует в том же каталоге, что и сценарий, или в родительском каталоге, azd автоматически выполняет dotnet restore и dotnet build.
  • Однофайловый режим: Начиная с .NET 10+, автономные .cs файлы выполняются непосредственно без файла проекта через dotnet run script.cs.

Пример структуры каталогов

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

Пример конфигурации

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

Конфигурация для .NET

Укажите конфигурацию сборки и целевой фреймворк с помощью блока config.

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

Переопределить рабочий каталог

Установите рабочий каталог для хука, используя поле dir. Эта конфигурация полезна, если корневой каталог проекта отличается от расположения скрипта:

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

Сочетание языков и форматов

Используйте разные языки для разных хуков в одном azure.yaml файле. Можно также совместить многоязычные хуки с переопределениями для конкретной платформы.

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

Запрос помощи

Чтобы получить информацию о том, как сообщить об ошибке, запросить помощь или предложить новую функцию для интерфейса командной строки разработчика Azure (CLI), перейдите на страницу устранения неполадок и поддержки.