output.filenameHash

  • 类型: boolean | string
  • 默认值: true
  • 版本: >= 0.4.0

在生产环境构建后,是否在产物的文件名中添加 hash 值。

禁用 hash

默认情况下,构建后的产物名称会包含 hash 值:

dist/static/css/index.7879e19d.css
dist/static/js/index.18a568e5.js

你可以将 output.filenameHash 设置为 false 来禁用这个行为:

export default {
  output: {
    filenameHash: false,
  },
};

重新构建后,产物的名称变为:

dist/static/css/index.css
dist/static/js/index.js

hash 格式

hash 的默认格式为 contenthash:8,即基于文件内容生成 8 位 hash。

你可以将 output.filenameHash 设置为 Rspack 支持的其他格式,并自定义长度。

export default {
  output: {
    filenameHash: 'fullhash:16',
  },
};

可选的 hash 格式为:

  • fullhash:整个编译过程的哈希值,如果任何一个文件发生变动,整个项目的所有输出文件的哈希值都会改变
  • chunkhash:chunk 的哈希值,如果 chunk 内容(及其包含的模块)发生改变,哈希值才会改变。
  • contenthash:文件内容的哈希值,只有当文件本身的内容发生变更时,哈希值才会改变。

注意事项

  • output.filename 的优先级高于 output.filenameHash
  • 默认情况下,当 target 不是 web 时,产物的文件名不会包含 hash,比如 Node.js 产物。
  • 默认情况下,开发环境构建产物的文件名不会包含 hash。