资源

配置公共资源和服务器资源的提供与打包方式。

Note

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

import { defineConfig } from "nitro";

#serveStatic

  • 类型:boolean | 'node' | 'inline'
  • 默认值:取决于所用的部署预设。

在生产环境中提供 public/ 资源。

注意: 强烈建议改由边缘 CDN(Nginx、Apache、Cloud)提供 .output/public/ 目录,以启用压缩和更高级别的缓存。

export default defineConfig({
  serveStatic: "node", // serve static assets using Node.js
});

#noPublicDir

  • 默认值:false

启用后不会创建 .output/public 目录,也会跳过 public/ 目录复制并禁用预渲染。

export default defineConfig({
  noPublicDir: true, // skip public directory output
});

#publicAssets

开发模式下提供、生产环境下打包的公共资源目录。

检测到 public/ 目录时会默认将其添加到列表中,你也可以自行添加其他目录。

可以使用 maxAge 选项为资源设置 Cache-Control 响应头:

export default defineConfig({
  publicAssets: [
    {
      baseURL: "images",
      dir: "public/images",
      maxAge: 60 * 60 * 24 * 7, // 7 days
    },
  ],
});

上述配置会为 public/images/ 目录下的资源生成以下响应头:

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

dir 选项指定文件在文件系统中的位置;baseURL 选项指定这些文件在提供或打包后可访问的目录。

Read more in Docs > Assets.

#compressPublicAssets

  • 类型:boolean | { gzip?: boolean, brotli?: boolean, zstd?: boolean }
  • 默认值:false

启用后,Nitro 会将公共目录中受支持类型且大于 1024 字节的资源和预渲染路由预先压缩为 gzip、brotli 和/或 zstd 格式。压缩级别使用默认值。借助此选项,无需 CDN 也能以零运行时开销提供压缩资源。

在开发模式下,受支持类型的公共资源会按启用的 gzip 和/或 brotli 编码即时压缩。

export default defineConfig({
  compressPublicAssets: {
    gzip: true,
    brotli: true, // enable gzip and brotli pre-compression
  },
});

#serverAssets

可在服务器逻辑中访问并在生产环境构建时打包的资源。

export default defineConfig({
  serverAssets: [
    {
      baseName: "templates",
      dir: "./templates", // bundle templates/ as server assets
    },
  ],
});
Read more in Docs > Assets#server Assets.