有没有办法禁用AMDPlugin?

时间:2015-03-27 14:12:33

标签: webpack

默认情况下,Webpack包含AMDPlugin,因此如果模块在CommonJS之前检查AMD,则将使用该模块定义。

if (typeof define === 'function' && define.amd) {
  define([], factory)
} else if (typeof exports === 'object') {
  exports.foo = factory();
}

我想完全忽略AMD。有没有办法在webpack中做到这一点?

3 个答案:

答案 0 :(得分:19)

可以使用imports-loader

解决
  

在使用CommonJS之前,有许多模块会检查define函数。由于webpack能够兼顾两者,因此在这种情况下它们默认为AMD,如果实现是古怪的,这可能是一个问题。   然后,您可以通过编写

轻松禁用AMD路径

imports?define=>false

简单地做

require('imports?define=>false!myjsfile.js')

更好的方法是在webpack.config.js中添加一个加载器

loaders: [ { test: /myjsfile.js/, loader: 'imports?define=>false'} ]

答案 1 :(得分:1)

您还可以在规则中添加以下内容以禁用AMD(webpack 2 +):

module: {
    rules: [
        { parser: { amd: false } }
    ]
}

发件人:https://webpack.js.org/configuration/module/

答案 2 :(得分:0)

另请考虑script-loader末尾提到的Shimming documentation

  

script-loader 评估全局上下文中的代码,类似于   通过脚本标记包含。在这种模式下,每个普通的库都应该   工作。 require,module等未定义