概述

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

Nitro 可以从相同的代码库生成适合不同托管提供者的不同输出格式。通过使用内置的预设,您可以轻松配置 Nitro 以几乎不需要额外代码或配置地调整其输出格式!

默认输出

默认的生产输出预设是 Node.js server

在开发模式下运行 Nitro 时,Nitro 总是会使用名为 nitro-dev 的特殊预设,该预设使用 Node.js 以 ESM 的形式在隔离的 Worker 环境中运行,尽可能接近生产环境的行为。

零配置提供者

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

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

更改部署预设

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

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

示例: 定义 NITRO_PRESET 环境变量

nitro build --preset cloudflare_pages

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

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

兼容性日期

部署提供者定期更新他们的运行时行为。Nitro 预设会更新以支持这些新功能。

为了防止破坏现有部署,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