当汇总项目包含 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>
标签,它就可以工作。
我正在使用汇总来构建依赖于 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>
标签,它就可以工作。