Azure 静态 Web 应用
预设: azure
可以使用 零配置 与此提供程序集成。
Azure 静态 Web 应用 旨在在 GitHub Actions 工作流 中持续部署。默认情况下,Nitro 将检测此部署环境并启用 azure
预设。
本地预览
如果您想在本地测试,请安装 Azure Functions Core Tools。
您可以调用开发环境在部署之前进行预览。
NITRO_PRESET=azure npx nypm@latest build
npx @azure/static-web-apps-cli start .output/public --api-location .output/server
配置
Azure 静态 Web 应用使用 staticwebapp.config.json
文件进行 配置。
每当使用 azure
预设构建应用程序时,Nitro 都会自动生成此配置文件。
Nitro 将根据以下条件自动添加以下属性:
属性 | 条件 | 默认 |
---|---|---|
platform.apiRuntime | 将根据您的包配置自动设置为 node:16 或 node:14 。 | node:16 |
navigationFallback.rewrite | 始终为 /api/server | /api/server |
routes | 所有预渲染的路由均已添加。此外,如果您没有 index.html 文件,则会为您创建一个空文件以达到兼容性目的,并且对 /index.html 的请求也会重定向到由 /api/server 处理的根目录。 | [] |
自定义配置
您可以使用 azure.config
选项更改 Nitro 生成的配置。
将首先添加和匹配自定义路由。如果发生冲突(确定对象是否具有相同的路由属性),自定义路由将覆盖生成的路由。
通过 GitHub 操作从 CI/CD 部署
将 GitHub 存储库链接到 Azure 静态 Web 应用时,工作流文件将添加到存储库。
当系统要求您选择框架时,请选择自定义并提供以下信息:
输入 | 值 |
---|---|
app_location | '/' |
api_location | '.output/server' |
output_location | '.output/public' |
如果您错过了这一步,您始终可以在工作流中找到构建配置部分并更新构建配置:
# ##### 存储库/构建配置 ######
app_location: /
api_location: .output/server
output_location: .output/public
# ##### 存储库/构建配置结束 ######
就是这样!现在 Azure 静态 Web 应用将在推送时自动部署您的 Nitro 驱动的应用程序。
如果您使用的是运行时配置,您可能需要配置相应的 Azure 上的环境变量。
Azure 函数
预设:azure_functions
如果您遇到任何问题,请确保您使用的是 Node.js 16+ 运行时。您可以在 Azure 文档中找到有关如何在 Azure 文档中设置 Node 版本的更多信息。 请参阅 unjs/nitro#2114 了解一些常见问题。
本地预览
如果您想在本地测试,请安装 Azure Functions Core Tools。
您可以从无服务器目录调用开发环境。
NITRO_PRESET=azure_functions npx nypm@latest build
cd .output
func start
您现在可以在浏览器中访问 http://localhost:7071/
并浏览在 Azure Functions 上本地运行的站点。
从本地计算机部署
要部署,只需运行以下命令:
# 发布捆绑的 zip 文件
az functionapp deploy source config-zip -g <resource-group> -n <app-name> --src dist/deploy.zip
# 或者,您可以从源发布
cd dist && func azure functionapp publish --javascript <app-name>
通过 GitHub 操作从 CI/CD 部署
首先,获取您的 Azure Functions 发布配置文件,并按照这些说明 将其作为机密添加到您的 GitHub 存储库设置中。
然后创建以下文件作为工作流:
name: azure
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
deploy:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
node: [14]
steps:
- uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node }}
- name: Checkout
uses: actions/checkout@master
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- uses: actions/cache@v2
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-azure
- name: Install Dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: yarn
- name: Build
run: npm run build
env:
NITRO_PRESET: azure_functions
- name: Deploy to Azure Functions
uses: Azure/functions-action@v1
with:
app-name: <your-app-name>
package: .output/deploy.zip
publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }}
优化 Azure 函数
考虑启用不可变包以支持从 zip 文件运行您的应用。这可以加快冷启动速度。