当汇总项目包含 jquery 和 backbone 等公共库时,您会怎么做?

What do you do when a rollup project contains a common library like jquery and backbone?

我正在使用汇总来构建依赖于 jquery 和 backbone 的库。花了三个星期构建它,但现在我意识到我的捆绑代码中包含 jquery 和 backbone 的源代码。因此,将我的库包含在已经有 jquery 的页面上只会加倍 jquery,导致很多不必要的膨胀。

开发者如何处理这个问题?

在这种情况下,将 jQuery 和 Backbone 留在捆绑包中是合适的,配置如下:

// rollup.config.js
export default {
  entry: 'src/main.js',
  moduleName: 'myLibrary',
  targets: [
    { dest: 'dist/my-library.umd.js', format: 'umd' },  // pkg.main
    { dest: 'dist/my-library.es.js', format: 'es' } // pkg.module
  ],
  external: [ 'jquery', 'backbone' ],
  globals: {
    jquery: 'jQuery',
    backbone: 'Backbone'
  }
};

这样,如果有人将某个应用程序与您的库捆绑在一起,jQuery 和 Backbone 将包含在内,但只会包含一次。另一方面,如果您的图书馆作为 <script> 标签包含在内,那么只要事先也有 jQuery 和 Backbone 的 <script> 标签,它就可以工作。