用 Python、JavaScript、TypeScript 或 .NET 撰寫 azd 鉤子

Azure Developer 的 CLI (azd) 掛鉤系統除了支援 Bash 和 PowerShell 外,還 支援 Python、 JavaScript、 TypeScript 和 .NET 。 azd 自動從副檔名偵測語言,管理相依性,並執行腳本,無需額外設定。

Hooks 讓你能在生命週期的關鍵 azd 時刻執行自訂邏輯,例如配置前、部署後等。 關於鉤子的一般資訊,包括可用的鉤子事件與設定選項,請參閱 使用指令與事件鉤子自訂工作流程。

Prerequisites

語言偵測

將掛鉤指向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 中引用它。 把 a package.json 放在和腳本相同的目錄或父目錄裡。 azd 執行 npm install (或區塊中 config 指定的套件管理器)並執行腳本。 使用 npx tsx 時,TypeScript 腳本可以直接運行,不需要任何編譯步驟或 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 檔案可直接透過 Run 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 欄位來設定 Hook 的工作目錄。 當專案根節點與腳本位置不同時,此配置非常有用:

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 新功能,請造訪 troubleshooting and support 頁面。