开发

仅影响开发服务器(nitro dev)的选项。

Note

本页所有示例都假设已在 nitro.config.ts 中导入以下内容:

import { defineConfig } from "nitro";

#devServer

  • 默认值:{ watch: [] }

开发服务器选项。可以使用 watch,在指定路径中的文件发生变化时重新加载开发服务器。

支持 port、hostname、watch、runner、drain 和 devtoolsJson 选项。

export default defineConfig({
  devServer: {
    port: 3001,
    watch: ["./server/plugins"],
  },
});

开发服务器默认会提供 /.well-known/appspecific/com.chrome.devtools.json,以便 Chrome DevTools 将项目目录连接为自动工作区,并将编辑内容保存回源文件。工作区 UUID 会保存在 buildDir 中。设置 devServer.devtoolsJson: false 可禁用此功能。

默认情况下,重新加载时会先关闭上一个开发 worker:新请求会等待它退出,超过 5 秒仍未结束的请求、流式响应和 WebSocket 会被中断。设置 devServer.drain: true 可让它继续处理这些连接,同时由新 worker 接收新请求。旧 worker 会在连接结束后关闭,最迟等待 60 秒(使用 drain: { timeout: 600_000 } 设置自定义上限,使用 Infinity 表示不限时)。

#watchOptions

开发模式的文件监听选项。更多信息请参阅 chokidar。

export default defineConfig({
  watchOptions: {
    ignored: ["**/node_modules/**", "**/dist/**"],
  },
});

#devProxy

开发服务器的代理配置。

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

export default defineConfig({
  devProxy: {
    "/proxy/test": "http://localhost:3001",
    "/proxy/example": { target: "https://example.com", changeOrigin: true },
    "/proxy/socket/**": { target: "http://localhost:3002", ws: true },
  },
});

路由的匹配方式与其他 Nitro 路由相同:/proxy/test 只匹配该确切路径;使用 /proxy/test/** 也可代理子路径。设置 ws: true 还可代理 WebSocket 升级请求。

所有可用的目标选项请参阅 httpxy。

Note

开发服务器运行在 Bun 或 Deno 上时(例如 bun --bun nitro dev),会使用该运行时的原生服务器监听。HTTP 请求通过 httpxy 的 proxyFetch 代理,支持 target、headers、auth、xfwd、changeOrigin、secure、ssl、agent、prependPath、ignorePath、proxyTimeout 和 followRedirects。WebSocket 通过 crossws 代理,支持 target、headers、auth、xfwd、prependPath 和 ignorePath(上游 Host 响应头始终与目标一致)。只有在 Node.js 上,才能向 miniflare 运行器(Cloudflare 预设)的开发 worker 发起 WebSocket 升级请求。