Azure Developer 的 CLI (azd) 掛鉤系統除了支援 Bash 和 PowerShell 外,還 支援 Python、 JavaScript、 TypeScript 和 .NET 。
azd 自動從副檔名偵測語言,管理相依性,並執行腳本,無需額外設定。
Hooks 讓你能在生命週期的關鍵 azd 時刻執行自訂邏輯,例如配置前、部署後等。 關於鉤子的一般資訊,包括可用的鉤子事件與設定選項,請參閱 使用指令與事件鉤子自訂工作流程。
Prerequisites
- 安裝azd
- 你所選語言的執行環境必須安裝在你的電腦上:
- Python: Python 3.x
- JavaScript/TypeScript: Node.js
- .NET: .NET SDK
語言偵測
將掛鉤指向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檔案可直接透過 Rundotnet 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 頁面。