部署

了解更多关于 Nitro 部署提供商的信息。

Nitro 可以从同一代码库生成适合不同托管提供商的不同输出格式。 使用内置 preset,轻松配置 Nitro 以调整其输出格式,几乎不需要额外的代码或配置!

默认输出

默认的生产输出 preset 是 Node.js 服务器

在开发模式下运行 Nitro 时,Nitro 将始终使用一个名为 nitro-dev 的特殊 preset,在隔离的 Worker 环境中使用带有 ESM 的 Node.js,其行为尽可能接近生产环境。

零配置提供商

使用 CI/CD 部署到生产环境时,Nitro 会尝试自动检测提供商环境并设置正确的环境,无需任何额外配置。目前,以下提供商可以零配置自动检测。

对于 Turborepo 用户,零配置检测将受到其严格环境模式的干扰。你可能需要显式允许变量或使用其宽松环境模式(使用 --env-mode=loose 标志)。

更改部署 preset

如果需要针对特定提供商构建 Nitro,可通过定义名为 NITRO_PRESETSERVER_PRESET 的环境变量,或更新 Nitro 配置或使用 --preset 参数来定位它。

对于依赖 CI/CD 的部署,建议使用环境变量方法。

示例: 定义 NITRO_PRESET 环境变量

nitro build --preset cloudflare_pages

示例: 更新 nitro.config.ts 文件

import { defineNitroConfig } from "nitro/config";

export default defineNitroConfig({
  preset: 'cloudflare_pages'
})

兼容性日期

部署提供商定期更新其 runtime 行为。Nitro preset 已更新以支持这些新功能。

为了防止破坏现有部署,Nitro 使用兼容性日期。这些日期允许你在项目创建时锁定行为。你也可以在准备好时选择加入未来的更新。

创建新项目时,compatibilityDate 设置为当前日期。此设置保存在项目的配置中。

你应该定期更新兼容性日期。更新后始终彻底测试你的部署。以下是关键日期及其效果的列表。

Compatibility datePlatformDescription
≥ 2024-05-07netlifyNetlify functions v2
≥ 2024-09-19cloudflareStatic assets support for cloudflare-module preset
≥ 2025-01-30denoDeno v2 Node.js compatibility