string[]
undefined
>= 1.1.7
强制 Rsbuild 从项目根目录解析指定的包,这可以用于移除重复包和减少包大小。
例如,假设你的项目是基于 React 18 开发的,而你正在使用的 foo
包依赖了 React 17,那么你的项目中就会存在两个不同版本的 React:
在这种情况下,你可以使用 resolve.dedupe
配置项来移除重复的 React 包,将所有 react
和 react-dom
包都解析到 /node_modules/react
和 /node_modules/react-dom
:
注意,如果使用 resolve.dedupe
将一个包的不同 major 版本统一为同一个,可能导致一些包无法正常工作,因为它们可能依赖于特定版本的 API 或功能。
例如,如果 foo
依赖了一个 React 17 特有的 API 或功能,此时将 React 17 和 React 18 统一为 React 18,就可能会导致 foo
无法正常工作。
resolve.dedupe
是基于 resolve.alias 实现的,它会在当前项目的根目录下通过 require.resolve
获取指定包的路径,并设置到 alias 中。
在上述的例子中,resolve.dedupe
会被转换为以下 alias 配置:
resolve.dedupe
生成的 alias 会与项目中配置的 resolve.alias
合并,当两者配置了相同的 key 时,resolve.alias
的优先级更高。