关于webpack中的libraryTarget设置

webpack中如果想不打包引用第三方类库、框架、自定义插件等,可以设置:

externals: { 'jquery': 'window.jQuery' },//以jquery为例

此时有entry1.js,entry2.js,entry3.js三个入口文件
1、如果libraryTarget不写,只在entry1.js中:

import $ from 'jquery'; 

那么打包出来只有entry1.js中会出现一个对jquery的引用:

0:(function(module, exports) {
module.exports = window.jQuery;
}),
//后面的则引用这个0编号jquery的chunk

2、如果加上libraryTarget: 'umd',
那么打包出来的文件,即使只有entry1.js用了jquery,entry2.js和entry3.js的里面也会出现一大串umd的包裹代码。

怎样用umd的时候去除没引用jquery的入口文件中的umd代码?


3、如果改成libraryTarget: 'amd',或者libraryTarget: 'commonjs',这样entry2和entry3里面的代码很简短了,但是amd的define以及commonjs的exports全会报错 not defined貌似只nodejs才能用,浏览器无法使用

所以,使用libraryTarget: 'umd'的时候,怎样让没引用externals中内容的入口文件,不生成一大堆umd代码?还是说干脆不写libraryTarget?

阅读 15.1k
2 个回答

如果是写插件,我会写libraryTarget:'umd',如果是项目,感觉是不需要写这个libraryTarget的

对于这个问题,也还在探究学习中,所以不能给出有建设性的答案;不过在实际项目中有采用 commonjs2,倒也没发现什么问题。今儿看到一篇对这个有一番详细的说明,可以参考下 http://www.tangshuang.net/334...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题