配置


Read more in Guide > Configuration.

一般设置

preset

使用 preset 选项环境变量 NITRO_PRESET 来定制 生产 预设。

开发模式的预设始终为 nitro_dev,生产环境默认构建独立的 Node.js 服务器的预设为 node_server

preset 选项未设置并在已知环境中运行时,预设将自动被检测。

logLevel

  • 默认值: 3(当检测到测试环境时为 1

日志的详细程度。有关更多信息,请参见 unjs/consola#level

runtimeConfig

  • 默认值: { nitro: { ... }, ...yourOptions }

服务器运行时配置。

注意: nitro 命名空间是保留的。

功能

experimental

  • 默认值: {}

启用实验性功能。

openAPI

启用 /_nitro/scalar/_nitro/swagger/_nitro/openapi.json 端点。

  • 默认值: false
Scalar 支持目前在 nightly channel 可用。

您可以传递一个对象于根级别来修改您的 OpenAPI 规范:

openAPI: {
  meta: {
    title: '我精彩的项目',
    description: '这可能成为下一个重大事物。',
    version: '1.0'
  }
}

如果您想定制 Scalar 集成,您可以像这样 传递一个配置对象:

openAPI: {
  ui: {
    scalar: {
      theme: 'purple'
    }
  }
}

wasm

启用对 WASM 的支持。

legacyExternals

启用后,将使用遗留(不稳定)实验性 rollup externals 算法。

future

  • 默认值: {}

等待重大版本的新特性,以避免破坏性更改。

nativeSWR

对 Netlify 和 Vercel 预设使用内置的 SWR 功能(使用缓存层和存储),而不是退回到 ISR 行为。

storage

  • 默认值: {}

存储配置,可以在 Storage Layer 部分中阅读更多信息。

timing

  • 默认值: false

启用时间信息:

  • Nitro 启动时间日志
  • HTTP 响应中的 Server-Timing

renderer

主要渲染的路径(文件应默认导出一个事件处理器)

serveStatic

  • 类型: boolean | 'node' | 'deno'
  • 默认值: 根据使用的部署预设而定。

在生产中提供 public/ 资源。

注意: 强烈建议您的边缘 CDN(nginx、apache、cloud)而不是直接服务 .output/public/ 目录以启用压缩和更高级别的缓存。

noPublicDir

  • 默认值: false

如果启用,禁用 .output/public 目录的创建。跳过复制 public/ 目录并且还禁用预渲染。

publicAssets

用于在开发中提供和在生产中打包的公共资产目录。

如果检测到 public/ 目录,则默认添加,但您也可以自行添加更多!

使用 maxAge 选项设置资产的 Cache-Control 头是可能的:

publicAssets: [
  {
    baseURL: "images",
    dir: "public/images",
    maxAge: 60 * 60 * 24 * 7, // 7 天
  },
],

上述配置将在 public/images/ 文件夹中的资产生成以下头:

cache-control: public, max-age=604800, immutable

dir 选项是文件在文件系统中的位置;baseURL 选项是在提供/打包时可以访问的文件夹。

compressPublicAssets

  • 默认值: { gzip: false, brotli: false }

如果启用,Nitro 将为支持的公共资产类型和预渲染路由生成预压缩(gzip 和/或 brotli)版本, 文件大小大于 1024 字节,放在公共目录中,使用最佳的压缩级别。使用此选项,您可以在不使用 CDN 的情况下支持零开销的资产压缩。

可压缩的 MIME 类型列表:

  • application/dash+xml
  • application/eot
  • application/font
  • application/font-sfnt
  • application/javascript
  • application/json
  • application/opentype
  • application/otf
  • application/pdf
  • application/pkcs7-mime
  • application/protobuf
  • application/rss+xml
  • application/truetype
  • application/ttf
  • application/vnd.apple.mpegurl
  • application/vnd.mapbox-vector-tile
  • application/vnd.ms-fontobject
  • application/wasm
  • application/xhtml+xml
  • application/xml
  • application/x-font-opentype
  • application/x-font-truetype
  • application/x-font-ttf
  • application/x-httpd-cgi
  • application/x-javascript
  • application/x-mpegurl
  • application/x-opentype
  • application/x-otf
  • application/x-perl
  • application/x-ttf
  • font/eot
  • font/opentype
  • font/otf
  • font/ttf
  • image/svg+xml
  • text/css
  • text/csv
  • text/html
  • text/javascript
  • text/js
  • text/plain
  • text/richtext
  • text/tab-separated-values
  • text/xml
  • text/x-component
  • text/x-java-source
  • text/x-script
  • vnd.apple.mpegurl

serverAssets

在服务器逻辑中可以访问的资产,并在生产中打包。 阅读更多

devServer

  • 默认值: { watch: [] }

开发服务器选项。您可以使用 watch 在指定路径中的任何文件更改时使开发服务器重新加载。

watchOptions

开发模式的观察选项。有关更多信息,请参见 chokidar

imports

自动导入选项。有关更多信息,请参见 unjs/unimport

plugins

  • 默认值: []

Nitro 插件路径的数组。它们将在首次初始化时按顺序执行。

请注意 Nitro 在 plugins/ 目录中自动注册插件, 了解更多

virtual

  • 默认值: {}

从动态虚拟导入名称到其内容或返回该内容的(异步)函数的映射。

路由

baseURL

默认值: /(如果提供,则为 NITRO_APP_BASE_URL 环境变量)

服务器的主要基本 URL。

apiBaseURL

  • 默认值 : /api

更改默认 api 基础 URL 前缀。

handlers

服务器处理程序和路由。

如果存在 routes/api/middleware/ 目录,它们将自动添加到处理程序数组中。

devHandlers

常规处理程序是指要通过 rollup 导入和转换的处理程序的路径。

在某些情况下,我们希望直接提供程序化使用的处理程序实例。

我们可以使用 devHandlers,但是请注意它们 仅在开发模式下可用无法在生产构建中使用

例如:

import { defineEventHandler } from 'h3'

export default defineNitroConfig({
  devHandlers: [
    {
      route: '/',
      handler: defineEventHandler((event) => {
        console.log(event)
      })
    }
  ]
})
请注意 defineEventHandler 是来自 h3 库的助手函数。

devProxy

开发服务器的代理配置。

您可以使用此选项覆盖开发服务器路由并代理请求。

{
  devProxy: {
    '/proxy/test': 'http://localhost:3001',
    '/proxy/example': { target: 'https://example.com', changeOrigin: true }
  }
}

有关所有可用目标选项,请参见 unjs/httpxy

errorHandler

自定义运行时错误处理程序的路径。替换 nitro 的内置错误页面。 错误处理程序会收到一个 H3ErrorH3Event。如果处理程序返回一个 Promise,它将被等待。 预期的处理程序将发送自己的响应。 以下是使用 h3 函数返回纯文本响应的示例。

示例:

export default defineNitroConfig({
  errorHandler: "~/error",
});

routeRules

🧪 实验性!

路由选项。它是从路由模式(遵循 unjs/radix3)到路由选项的映射。

当设置 cache 选项时,匹配模式的处理程序将自动包装在 defineCachedEventHandler 中。

请参见 Cache API 以获取所有可用缓存选项。

swr: true|numbercache: { swr: true, maxAge: number } 的快捷方式。

示例:

routeRules: {
  '/blog/**': { swr: true },
  '/blog/**': { swr: 600 },
  '/blog/**': { static: true },
  '/blog/**': { cache: { /* cache options*/ } },
  '/assets/**': { headers: { 'cache-control': 's-maxage=0' } },
  '/api/v1/**': { cors: true, headers: { 'access-control-allow-methods': 'GET' } },
  '/old-page': { redirect: '/new-page' }, // 使用状态码 307(临时重定向)
  '/old-page2': { redirect: { to:'/new-page2', statusCode: 301 } },
  '/old-page/**': { redirect: '/new-page/**' },
  '/proxy/example': { proxy: 'https://example.com' },
  '/proxy/**': { proxy: '/api/**' },
}

prerender

默认值:

{
  autoSubfolderIndex: true,
  concurrency: 1,
  interval: 0,
  failOnError: false,
  crawlLinks: false,
  ignore: [],
  routes: [],
  retries: 3,
  retryDelay: 500
}

预渲染选项。指定的任何路由将在构建期间被获取并复制到 .output/public 目录中作为静态资产。

ignore 中列出的前缀开头或匹配正则表达式或函数的任何路由(字符串)将被忽略。

如果设置 crawlLinks 选项为 true,Nitro 将默认从 / 开始(或在 routes 数组中的所有路由)提取 HTML 页面的 <a> 标签并进行预渲染。

您可以将 failOnError 选项设置为 true 以在 Nitro 无法预渲染路由时停止 CI。

intervalconcurrency 选项让您控制预渲染的速度,这在调用外部 API 时可用于避免触及一些速率限制。

设置 autoSubfolderIndex 让您控制如何在 .output/public 目录中生成文件:

# autoSubfolderIndex: true (默认)
关于 -> .output/public/about/index.html
# autoSubfolderIndex: false
关于 -> .output/public/about.html

当您的主机提供商不提供有关尾随斜杠的选项时,此选项非常有用。

预渲染程序将尝试以 500 毫秒的延迟渲染页面 3 次。使用 retryretryDelay 可以更改此行为。

目录

rootDir

项目主目录。

srcDir

项目源目录。与 rootDir 相同,除非指定。对将代码移动到 src/ 很有帮助。

scanDirs

  • 默认值: (当空数组时为源目录)

要扫描并自动注册文件的目录列表,例如 API 路由。

apiDir

  • 默认值 : api

定义扫描 API 路由处理程序的不同目录。

routesDir

  • 默认值 : routes

定义扫描路由处理程序的不同目录。

buildDir

  • 默认值: .nitro

nitro 生成构建相关文件的临时工作目录。

output

  • 默认值: { dir: '.output', serverDir: '.output/server', publicDir: '.output/public' }

生产打包的输出目录。

高级

dev

  • 默认值: true 适用于开发环境,false 适用于生产环境。

⚠️ 注意!这是高级配置。如果配置错误,可能会出现问题。

typescript

默认值: { generateTsConfig: true }

nodeModulesDirs

⚠️ 注意!这是高级配置。如果配置错误,可能会出现问题。

解析模块时搜索的额外 node_modules。默认情况下添加用户目录。

hooks

⚠️ 注意!这是高级配置。如果配置错误,可能会出现问题。

nitro 钩子。有关更多信息,请参见 unjs/hookable

commands

⚠️ 注意!这是高级配置。如果配置错误,可能会出现问题。

预览和部署命令提示通常由部署预设填充。

devErrorHandler

⚠️ 注意!这是高级配置。如果配置错误,可能会出现问题。

用于开发错误的自定义错误处理程序函数。

Rollup

rollupConfig

额外的 rollup 配置。

entry

Rollup 入口。

unenv

unjs/unenv 预设的选项。

alias

Rollup 别名选项。

minify

  • 默认值: false

压缩打包。

inlineDynamicImports

避免创建块。

sourceMap

启用源映射生成。请参见 options

  • 默认值: true

node

指定构建是否用于 Node.js。如果设置为 false,Nitro 将尝试使用 unjs/unenv 模拟 Node.js 依赖项并调整其行为。

analyze

如果启用,将在构建后使用 rollup-plugin-visualizer 分析服务器打包。您还可以传递自定义选项。

moduleSideEffects

默认值: ['unenv/runtime/polyfill/', 'node-fetch-native/polyfill']

Rollup 特定选项。指定具有副作用的模块导入。

replace

Rollup 特定选项。

commonJS

Rollup 特定选项。指定对 rollup CommonJS 插件的额外配置。

预设

firebase

Firebase 函数预设的选项。请参见 预设文档

vercel

Vercel 预设的选项。请参见 预设文档

cloudflare

Cloudflare 预设的选项。请参见 预设文档