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',如果是项目,感觉是不需要写这个libraryTarget的