publicDir
type PublicDir =
| false
| {
/**
* public 目录名称,可以设置为相对路径或绝对路径
* @default 'public'
*/
name?: string;
/**
* 在生产构建时,是否将文件从 public 目录复制到构建产物目录
* @default true
*/
copyOnBuild?: boolean;
};
const defaultValue = {
name: 'public',
copyOnBuild: true,
};
默认情况下,Rsbuild 会将 public
目录作为静态资源服务的文件夹,该目录中的文件可在 /
路径下访问。
需要注意的是:
- 引入 public 中的资源永远应该使用根绝对路径。例如,
public/icon.png
应该在源码中被引用为 /icon.png
。
- 在生产环境构建过程中,public 目录中的文件将会被拷贝到构建产物目录(默认为
dist
)下,请注意不要和产物文件出现名称冲突。当 public 下的文件和产物重名时,构建产物具有更高的优先级,会覆盖 public 下的同名文件。这个功能可以通过将 copyOnBuild
设置为 false 来禁用。
Boolean 类型
通过将 publicDir
设置成 false
可禁用静态资源服务功能:
export default {
server: {
publicDir: false,
},
};
Object 类型
当 publicDir
的值为 object 类型时,Rsbuild 会根据当前配置与默认配置进行合并。
比如设置 public 目录的名称为 static
,并关闭 copyOnBuild
:
export default {
server: {
publicDir: {
name: 'static',
copyOnBuild: false,
},
},
};
需要注意的是,将 copyOnBuild
的值为 false 后,如果执行 rsbuild preview
进行生产环境预览,将无法访问对应的静态资源文件。
路径类型
name
的值可以设置为相对路径或绝对路径,相对路径将会相对于项目根目录进行解析。
export default {
server: {
publicDir: {
name: '../some-public',
},
},
};
import path from 'node:path';
export default {
server: {
publicDir: {
name: path.join(__dirname, '../some-public'),
},
},
};