rollupjs避免多文件的重复功能

问题描述 投票:0回答:1

我试图将所有的通用库打包,以便在没有实际的入口文件的情况下用于多个项目。因此,我需要将所有的函数都包含在捆绑包中。

因此,我试图使用@rollupplugin-multi-entry指向目录内的所有文件来实现这一点。

我目前面临的问题是,有些文件相互扩展,打包时,扩展函数以$n等名称重复多次,是否可以让rollup不重复这些扩展函数?

谢谢,谢谢

rollup rollupjs
1个回答
0
投票

在一个项目中捆绑库 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))
  },
  // ...
}

© www.soinside.com 2019 - 2024. All rights reserved.