Webpack 中的 imports-loader 中的 exports=>false
exports=>false in imports-loader in Webpack
如果我使用 imports-loader,配置中的 exports=>false
部分是什么意思?它应该注入变量var exports = false
,但我不知道何时以及为什么需要这个变量。
module : {
loaders : [
{
test : /eonasdan-bootstrap-datetimepicker/,
loader : 'imports?define=>false,exports=>false,moment=moment'
}]
}
Imports 用于填充需要定义全局变量的第三方代码,例如 jQuery $
或 AMD 的 define
。你可能想要这样做的原因是因为模块打包器通常打包成 AMD 和 CommonJS 都理解的格式,也就是通用模块定义 UMD
格式。导入 UMD 模块时,它会首先检查定义 (AMD
) 是否存在,然后导出 (CommonJS
)。 Webpack 更容易解析 CommonJS(节点本机格式),因此将 define 设置为 false 明确告诉 webpack 不要将其解析为 AMD
模块。
更新
他们似乎可能会禁用所有模块导出并将 moment 定义为 moment js 库。我猜想那个库中的代码正在扩展 bootstrap datepicker 控件的功能。
如果我使用 imports-loader,配置中的 exports=>false
部分是什么意思?它应该注入变量var exports = false
,但我不知道何时以及为什么需要这个变量。
module : {
loaders : [
{
test : /eonasdan-bootstrap-datetimepicker/,
loader : 'imports?define=>false,exports=>false,moment=moment'
}]
}
Imports 用于填充需要定义全局变量的第三方代码,例如 jQuery $
或 AMD 的 define
。你可能想要这样做的原因是因为模块打包器通常打包成 AMD 和 CommonJS 都理解的格式,也就是通用模块定义 UMD
格式。导入 UMD 模块时,它会首先检查定义 (AMD
) 是否存在,然后导出 (CommonJS
)。 Webpack 更容易解析 CommonJS(节点本机格式),因此将 define 设置为 false 明确告诉 webpack 不要将其解析为 AMD
模块。
更新
他们似乎可能会禁用所有模块导出并将 moment 定义为 moment js 库。我猜想那个库中的代码正在扩展 bootstrap datepicker 控件的功能。