我正在尝试打包所有的通用库,以便在没有实际入口文件的情况下与多个项目一起使用。因此,我需要将所有函数都包含在包中
因此,我尝试使用@rollup/plugin-multi-entry指向目录中的所有文件来实现这一点
我目前面临的问题是,一些文件相互扩展,打包时,扩展功能被多次复制,名称为$n等等,是否可以使rollup不复制这些扩展功能?
谢谢
发布于 2020-06-18 14:34:55
由于忽略了three-shaking的好处,将库捆绑到vendor文件中现在被认为是一种反模式。它还会带来更糟糕的caching,因为每次库更改时,整个供应商的缓存都会失效,最后,您不会从http2 multiplexing中获得太多好处。
如果您仍然想这样做,为了给它们提供可靠的名称(并避免命名冲突),手动操作要容易得多:
// 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))
},
// ...
}https://stackoverflow.com/questions/62441538
复制相似问题