我试图将所有的通用库打包,以便在没有实际的入口文件的情况下用于多个项目。因此,我需要将所有的函数都包含在捆绑包中。
因此,我试图使用@rollupplugin-multi-entry指向目录内的所有文件来实现这一点。
我目前面临的问题是,有些文件相互扩展,打包时,扩展函数以$n等名称重复多次,是否可以让rollup不重复这些扩展函数?
谢谢,谢谢
在一个项目中捆绑库 vendor
文件现在被认为是一个反模式,因为你会忽略了它的好处。three-shaking
. 它还会带来更糟糕的 caching
因为每当某个lib发生变化时,整个厂商的缓存都会失效,最后,你将无法从 http2
复用 那么多。
如果你还想这么做,为了给它们起个可靠的名字(避免命名冲突),手动操作就容易多了。
// vendor.js
import * as lib1 from 'lib1';
import * as lib2 from 'lib2';
export {lib1, lib2}
前面的模块作为切入点时,将导致从两个库的所有导出都在各自的命名空间下导出,而rollup将在内部正确处理库之间的依赖关系。
编辑:如果你能把库和项目一起捆绑,而不是在不同的过程中,你可以这样做。
// rollup.config.js
const libs = ['lib1', 'lib2'];
{
input: 'index.js',
manualChunks: {
vendor: libs.map((lib) => require.resolve(lib))
},
// ...
}