本节内容派生于以下链接指向的内容 ,并遵守 CC BY 4.0 许可证的规定。
以下内容如果没有特殊声明,可以认为都是基于原内容的修改和删减后的结果。
优化:该选项用于自定义优化配置。你可以通过 optimization 来自定义优化配置。默认情况下,Rspack 会根据 mode 来选择合适的优化配置。
'natural' | 'named' | 'deterministic'| 选项 | 描述 |
|---|---|
natural |
根据模块加载的顺序使用自增数字作为模块 id。 |
named |
使用有意义、方便调试的内容当作模块 id。此选项会在开发环境下默认开启。 |
deterministic |
使用对模块标识符哈希后的数字当作模块 id,有益于长期缓存。此选项会在生产环境下默认开启。 |
'named' | 'deterministic'| 选项 | 描述 |
|---|---|
'named' |
使用有意义、方便调试的内容当作 Chunk id。此选项会在开发环境下默认开启。 |
'deterministic' |
简短的数字 id,在多次编译的场景下,会尽量保持其稳定性。适合长期缓存。此选项会在生产环境下默认开启。 |
booleantrue是否合并重复 Chunk,设置成 false 会关掉合并重复 Chunk 行为。
当前该优化可能会对性能有很大的影响。optimization.splitChunks,而且将 optimization.splitChunks.chunks 设置为了 'all',就可以关掉 optimization.mergeDuplicateChunks。
如果你正遇到性能问题,并且你在使用
booleantrue, development 模式 为false是否对产物进行压缩。
Array<Plugin>[new SwcJsMinimizerRspackPlugin(), new SwcCssMinimizerRspackPlugin()]自定义压缩器。默认使用 rspack.SwcJsMinimizerRspackPlugin
和 rspack.SwcCssMinimizerRspackPlugin。当声明了 optimization.minimizer,默认压缩器会被禁用。
使用内置压缩器和自定义选项:
booleantrue移除打包过程中产生的空 Chunk。
boolean | string | ((entrypoint: { name: string }) => string)false用来控制 runtime chunk 如何生成。
设置为 true 或 'multiple' 会为每个入口点添加一个仅包含运行时的额外 chunk。
设置为 'single' 会将所有入口点的运行时代码抽离到一个单独的 chunk。
boolean | 'flag'true, development 模式 为false告诉 Rspack 识别 package.json 中的 sideEffects 标志或者 module.rules(模块配置中的规则),当模块导出都未被使用且模块本身没有副作用时跳过模块及其子树。
optimization.sideEffects 依赖于 builtins.treeShaking 的启用。这种配置项开启后有额外的构建时间开销,但移除模块对性能有积极影响,因为这意味着更少的代码生成。这种优化的效果取决于你的代码库。
如果你只想使用通过package.json 和 module.rule.sideEffects 配置的 sideEffects,而不想分析代码:
optimization.sideEffects 为 true 时,Rspack 会在一个模块中所有的语句(statement)都没有副作用时标记该模块为无副作用。
在产物处理完成后,添加额外的哈希计算步骤根据产物的文件内容计算该产物的哈希。该功能在生产环境下会默认开启。
如果将 realContentHash 设置为 false,则使用编译流程中的内部数据计算哈希,在某些情况下,即使产物内容完全一致也可能导致哈希变化。
false | objectRspack 支持通过 optimization.splitChunks 配置项来对 Chunk 进行拆分。
该优化选项默认情况下是开启的,你可以将其设为 false 来关闭它。
有关配置此行为的可用选项,请参见 SplitChunksPlugin 页面。
boolean | 'global'true, development mode isfalse告诉 Rspack 对每个模块确定使用的导出。这取决于 optimization.providedExports。
optimization.usedExports 收集的信息被其他优化或代码生成使用,即不会为未使用的导出生成导出信息,当所有用法兼容时,导出名称会被缩短为单个字符标识符。压缩器中的死代码消除将受益于此,并且可以删除未使用的导出。
如果需要在运行时取消使用的导出分析:
booleantrue, development mode isfalseoptimization.innerGraph 告诉 Rspack 是否进行未使用导出的内部图分析。
booleantrue开启后 Rspack 将会分析模块提供哪些导出,包括重导出模块,引用模块不存在的导出时会发出提示。默认情况下,optimization.providedExports 已启用,该分析会增加构建时间,你可以考虑在 development 模式中关闭该配置,关闭后有可能会遇到SideEffects 章节运行时循环依赖的错误。
boolean | 'deterministic' | 'size' deterministic, development mode isfalseoptimization.mangleExports 允许控制导出名称的混淆。
支持以下选项:
| option | description |
|---|---|
| 'named' | 使用有意义且易于调试的内容作为标识符。在开发模式下,默认启用此选项。 |
| 'deterministic' | 使用哈希模块标识符作为标识符,以便从长期缓存中受益。在生产模式下,默认启用此选项。 |
| true | 与 'deterministic' 相同。 |
| false | 保留原始名称。适用于可读性和调试。 |
boolean | stringfalseRspack 将 process.env.NODE_ENV 设置为给定的字符串。除非该值被明确设置为 false,否则 optimization.nodeEnv 将使用 DefinePlugin。
optimization.nodeEnv 的默认值为 mode,否则将设置为 'production'。
可能的值:
process.env.NODE_ENV 的值。process.env.NODE_ENV 的值。当 mode 被设置为 'none' 时,optimization.nodeEnv 默认为 false。