以下介绍均使用配置项
library: '$common'
var
暴露一个用var 定义的$common变量。在node环境下不支持
var $common = function (e) {
var t = {};
......
}([]).default;
window
针对浏览器环境使用,将$common变量赋给window对象,其它地方与var一模一样
window.$common = function (e) {
var t = {};
......
}([]).default;
this
将window替换为this,其余和window一模一样
this.$common = function (e) {
var t = {};
......
}([]).default;
jsonp
将 $common作为 jsonp回调函数
$common(function (e) {
var t = {};
......
}([]).default);
global
在global对象上定义一个$common变量。类似于window,只是它会受target属性影响,当target为默认值web时,会在window上注册,如果你想在global上注册,必须修改target为node。
global.$common = function (e) {
var t = {};
......
}([]).default;
// 当target属性为web(默认值是web)时,global会变为window;node时则为global
assign
暴露一个未定义的common变量的值
$common = function (e) {
var t = {};
......
}([]).default;
amd
在define方法上定义$common变量,不能用script直接引用,必须通过第三方模块RequireJS来时用
define("$common", [], (function () {
return function (e) {
var t = {};
}([]).default
}));
commonjs
在export对象上定义library设置的变量。在node中支持,浏览器中不支持。
exports.$common = function (e) {
var t = {};
......
}([]).default;
commonjs2
直接用module.export导出export,会忽略$common变量。在node中支持,在浏览器中不支持。
module.exports = function (e) {
var t = {};
......
}([]).default;
umd
该方案支持commonjs、commonjs2、amd,可以在浏览器、node中通用。
! function (e, t) {
"object" == typeof exports && "object" == typeof module ? module.exports = t() :
"function" == typeof define && define.amd ? define([], t) :
"object" == typeof exports ? exports.$common = t() :
e.$common = t()
}(window, (function () {
return function (e) {
var t = {};
}([]).default
}));
参考资料
libraryTarget的几种选择我们来好好分析
深入理解webpack library,libraryTarget,externals的区别及作用
详解webpack的out.libraryTarget属性