为了自定义 Nitro 的行为,我们创建了一个名为 nitro.config.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 标头:
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
开发服务器的代理配置。
您可以使用此选项覆盖开发服务器路由和代理传递请求。
{
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:
import { defineNitroConfig } from 'nitropack/config'
export default defineNitroConfig({
errorHandler: '~/error',
})
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:
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 插件的附加配置。