配置文件 Configuration

使用配置文件自定义您的 Nitro 应用程序。

为了自定义 Nitro 的行为,我们创建了一个名为 nitro.config.ts 的文件。

ts
nitro.config.ts
ts
import { defineNitroConfig } from 'nitropack/config'

export default defineNitroConfig({
  // options
})

General

preset

使用 preset 选项 NITRO_PRESET 环境变量来自定义 production 预设。

开发模式的预设始终是 nitro-dev 和默认的 node-server 用于生产构建独立的 Node.js 服务器。

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

logLevel

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

日志详细级别。 有关详细信息,请参阅 unjs/consola#level

runtimeConfig

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

服务器运行时配置。

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

Features

experimental

  • 默认值: {}

启用实验性功能。 目前,没有可用的!

storage

  • 默认值: {}

存储配置,在 存储层 部分阅读更多内容。

timing

  • 默认值: false

启用时序信息:

  • 硝基启动时间日志
  • HTTP 响应上的Server-Timing标头

renderer

主渲染路径(文件应默认导出事件处理程序)

serveStatic

  • Type: boolean | 'node' | 'deno'
  • 默认值: 取决于使用的部署预设。

在生产中为“公共/”资产提供服务。

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

noPublicDir

  • 默认值: false

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

publicAssets

用于开发和捆绑生产的公共资产目录。

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

可以使用 maxAge 选项为资产设置 Cache-Control 标头:

ts
publicAssets: [
  {
    baseURL: 'images',
    dir: 'public/images',
    maxAge: 60 * 60 * 24 * 7, // 7 days
  },
]

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

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

compressPublicAssets

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

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

可压缩 MIME 类型列表:
详情

serverAssets

资产可以在服务器逻辑中访问并在生产中捆绑。 阅读更多

devServer

  • 默认值: { watch: [] }

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

watchOptions

观察开发模式的选项。 有关详细信息,请参阅 chokidar

imports

自动导入选项。 有关详细信息,请参阅 unjs/unimport

plugins

  • 默认值: []

一系列 nitro 插件的路径。 它们将在第一次初始化时按顺序执行。

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

virtual

  • 默认值: {}

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

Routing

baseURL

默认值:/(或者如果提供了 NITRO_APP_BASE_URL 环境变量)

服务器的主要基础 URL。

handlers

服务器处理程序和路由。

如果 routes/api/middleware/ 目录存在,它们将被自动添加到 handlers 数组中。

devHandlers

regular handlers指的是rollup导入转化的handler路径。

在某些情况下,我们直接想提供一个具有编程用法的处理程序实例。

我们可以使用 devHandlers 但请注意它们仅在开发模式下可用并且不适用于生产构建

devProxy

开发服务器的代理配置。

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

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

有关所有可用的目标选项,请参阅 https://github.com/http-party/node-http-proxy#options

errorHandler

自定义运行时错误处理程序的路径。 替换 nitro 的内置错误页面。

Example:

nitro.config
js
import { defineNitroConfig } from 'nitropack/config'

export default defineNitroConfig({
  errorHandler: '~/error',
})
error.ts
ts
import type { NitroErrorHandler } from 'nitropack'

export default <NitroErrorHandler> function (error, event) {
  event.res.end(`[custom error handler] ${error.stack}`)
}

routeRules

🧪 Experimental!

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

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

查看 Cache API 了解所有可用的缓存选项。

swr: true|number is shortcut for cache: { swr: true, maxAge: number }

Example:

js
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' },
  '/proxy/example': { proxy: 'https://example.com' },
  '/proxy/**': { proxy: '/api/**' },
}

prerender

默认值:{ crawlLinks: false, ignore: [], routes: [] }

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

任何以 ignore 中列出的前缀开头的路由都将被忽略。

如果 crawlLinks 选项设置为 true,nitro 默认以 / 开始(或 routes 数组中的所有路由),对于 HTML 页面提取 <a href=""> 标签并预渲染它们 .

Directories

rootDir

项目主目录

srcDir

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

scanDirs

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

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

buildDir

  • 默认值: .nitro

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

output

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

生产包的输出目录。

Advanced

dev

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

⚠️ 注意! 这是一个高级配置。 如果配置错误,事情可能会出错。

typescript

默认值: { generateTsConfig: true }

nodeModulesDirs

⚠️ 注意! 这是一个高级配置。 如果配置错误,事情可能会出错。

解析模块时要搜索的附加 node_modules。 默认添加用户目录。

hooks

⚠️ 注意! 这是一个高级配置。 如果配置错误,事情可能会出错。

硝基挂钩。 有关详细信息,请参阅 unjs/hookable

commands

⚠️ 注意! 这是一个高级配置。 如果配置错误,事情可能会出错。

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

devErrorHandler

⚠️ 注意! 这是一个高级配置。 如果配置错误,事情可能会出错。

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

Rollup

rollupConfig

额外的汇总配置。

entry

Rollup entry.

unenv

unjs/unenv 预设的选项。

alias

汇总别名选项。

minify

  • 默认值: false

最小化压缩。

inlineDynamicImports

避免创建块。

sourceMap

启用源映射生成。 请参阅选项

  • 默认值: true

node

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

analyze

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

moduleSideEffects

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

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

replace

汇总特定选项。

commonJS

汇总特定选项。 指定汇总 CommonJS 插件的附加配置。

翻到头了