使用 Azure Static Web Apps CLI 部署靜態 Web 應用程式
重要
為了改善靜態 Web Apps CLI 部署的安全性,引進了重大變更,要求您在 2025 年 1 月 15 日之前升級至最新版的靜態 Web Apps CLI。
Azure Static Web Apps CLI (SWA CLI) 具有 deploy
將目前專案部署至 Azure Static Web Apps 的命令。
常見的部署案例包括:
- 沒有 API 的前端應用程式
- 具有 API 的前端應用程式
- Blazor 應用程式
部署令牌
SWA CLI 支援使用部署令牌進行部署,以在 CI/CD 環境中啟用設定。
您可以從取得部署權杖:
Azure 入口網站:主→靜態 Web 應用程式→您的實例→概觀→管理部署令牌
Azure CLI:使用
secrets list
命令:az staticwebapp secrets list --name <APPLICATION_NAME> --query "properties.apiKey"
Azure Static Web Apps CLI:使用
deploy
命令:swa deploy --print-token
接著,您可以將令牌值與 --deployment-token <TOKEN>
搭配使用,也可以建立名為 SWA_CLI_DEPLOYMENT_TOKEN
的環境變數,並將其設定為部署令牌。
重要
請勿將部署令牌儲存在公用存放庫中。
部署沒有 API 的前端應用程式
您可以將沒有 API 的前端應用程式部署至 Azure Static Web Apps。 如果您的前端應用程式需要建置步驟,請執行 swa build
或參考應用程式建置指示。
選取最符合您設定部署需求的選項
選項 1: 從您想要部署的組建資料夾中,執行 deploy 命令:
cd build/ swa deploy
注意
組建資料夾必須包含要部署之應用程式的靜態內容。
選項 2: 您也可以部署特定資料夾:
如果您的前端應用程式需要建置步驟,請執行
swa build
或參考應用程式建置指示。部署您的應用程式:
swa deploy ./my-dist
使用 API 部署前端應用程式
使用下列步驟來部署具有 API 端點的應用程式。
如果您的前端應用程式需要建置步驟,請執行
swa build
或參考應用程式建置指示。請確定已正確設定staticwebapp.config.json檔案中的 API 語言執行平臺版本,例如:
{ "platform": { "apiRuntime": "node:16" } }
注意
如果您的項目沒有 staticwebapp.config.json 檔案,請在資料夾
outputLocation
下新增一個檔案。部署您的應用程式:
swa deploy ./my-dist --api-location ./api
部署 Blazor 應用程式
您可以使用下列步驟來部署 Blazor 應用程式。
以 發行 模式建置您的 Blazor 應用程式:
dotnet publish -c Release -o bin/publish
從專案的根目錄中,執行 deploy 命令:
swa deploy ./bin/publish/wwwroot --api-location ./Api
使用組態檔進行部署
注意
outputLocation
路徑必須相對於 appLocation
。
如果您使用專案中的 swa-cli.config.json
組態檔搭配單一組態專案,您可以執行下列步驟來部署應用程式。
如需參考,單一組態專案的範例看起來像下列代碼段。
{
"configurations": {
"my-app": {
"appLocation": "./",
"apiLocation": "api",
"outputLocation": "frontend",
"start": {
"outputLocation": "frontend"
},
"deploy": {
"outputLocation": "frontend"
}
}
}
}
如果您的前端應用程式需要建置步驟,請執行
swa build
或參考應用程式建置指示。部署應用程式。
swa deploy
如果您有多個組態專案,您可以提供專案識別碼來指定要使用的項目識別碼:
swa deploy my-otherapp
選項。
您可以使用下列選項:swa deploy
-a, --app-location <path>
:包含前端應用程式原始碼的資料夾(預設值: “.
”)-i, --api-location <path>
:包含 API 應用程式原始碼的資料夾-O, --output-location <path>
:包含前端應用程式建置來源的資料夾。 路徑相對於--app-location
(預設值: “.
”)-w, --swa-config-location <swaConfigLocation>
:staticwebapp.config.json檔案所在的目錄-d, --deployment-token <secret>
:用來向靜態 Web Apps 進行驗證的秘密令牌-dr, --dry-run
:模擬部署程式而不實際執行它 (預設值:false
)-pt, --print-token
:列印部署令牌 (預設值:false
)--env [environment]
:部署環境的類型,其中要部署專案(預設值:“preview
”)-S, --subscription-id <subscriptionId>
:此專案所使用的 Azure 訂用帳戶識別碼(預設值:process.env.AZURE_SUBSCRIPTION_ID
)-R, --resource-group <resourceGroupName>
:此專案所使用的 Azure 資源群組-T, --tenant-id <tenantId>
:Azure 租使用者識別碼(預設值:process.env.AZURE_TENANT_ID
)-C, --client-id <clientId>
:Azure 用戶端標識碼-CS, --client-secret <clientSecret>
:Azure 客戶端密碼-n, --app-name <appName>
:Azure 靜態 Web 應用程式應用程式名稱-cc, --clear-credentials
:在登入之前清除儲存的認證 (預設值:false
)-u, --use-keychain
:針對持續性認證使用作業系統原生密鑰鏈啟用 (預設值:true
-nu, --no-use-keychain
:使用操作系統原生金鑰鏈停用-h, --help
:顯示命令的說明
使用方式
使用部署令牌進行部署。
swa deploy ./dist/ --api-location ./api/ --deployment-token <TOKEN>
使用環境變數中的部署令牌進行部署。
SWA_CLI_DEPLOYMENT_TOKEN=123 swa deploy ./dist/ --api-location ./api/
使用 swa-cli.config.json
檔案部署
swa deploy
swa deploy myconfig
列印部署令牌。
swa deploy --print-token
部署到特定環境。
swa deploy --env production