shared 用于在消费者和生产间共享公共依赖,降低运行时下载体积从而提升性能,shared 可以配置依赖版本的复用规则,可以通过 FAQ 了解 shared 适用场景以及如何使用 shared
PluginSharedOptionsundefinedPluginSharedOptions 类型如下:
booleanfalse是否在共享作用域中只允许共享模块的一个版本 (单例模式).
stringrequire('project/package.json')[devDeps | dep]['depName']所需版本,可以是一个版本区间。默认值为当前应用的依赖版本。
eager 设置为 true 后,会将共享依赖打包到入口文件,从而导致入口文件体积过大。请谨慎开启。
booleanfalse是否立即加载共享模块。
正常情况下,需要开启异步入口,随后按需异步加载 shared 。 若想使用 shared ,但又不想开启异步入口,那么可以设置 eager 为 true 。
string'default'共享依赖作用域,默认值为 'default' 。
跨项目消费模块往往会碰到重复依赖加载、依赖单例限制等问题,这些问题可以通过设置 shared 来解决。
lodash.getreactlodash (未按需引用)antd那么此时可以在 shared 配置中添加对应的依赖。
根据使用场景,Module Federation 支持两种形式配置共享依赖,分别是 数组、对象。前者适用于大部分场景,后者适用于复杂的定制需求。
数组格式(通用场景)
仅需在 Module Federation 构建配置中的 shared 配置添加对应的依赖即可,例如:
对象格式(定制化配置)
在 Module Federation Plugin 中的 shared 配置添加需要共享的依赖, key 为依赖名称,value 为提供的配置。