我真的很喜欢类似AMD的js模块管理语法。现在我试图找出如何使用require.js和早午餐。 这就是我想要实现的目标:
问题是如果我加载require.js,一些供应商脚本正在尝试定义匿名模块。以下是从Backbone剪切的代码供参考:
if (typeof define === 'function' && define.amd) {
define(['underscore', 'jquery', 'exports'], function(_, $, exports) {
//...
});
}
因此,require.js抱怨匿名模块定义。
答案 0 :(得分:0)
这就是Brunch中默认禁用供应商代码包装的原因。许多供应商脚本都有UMD或他们自己的暴露API的方式,这些API与通用模块包装不兼容,但如果不管它们,它们将与AMD结构一起开箱即用。
您可能想要做的是将供应商脚本组织到单独的目录中,这些目录需要由Brunch包装的那些以及那些不需要包装的脚本。像vendor
和vendor-wrapped
之类的东西。使用默认的conventions
设置,Brunch会将脚本包装在vendor-wrapped
中,而不是vendor
中的脚本。然后你可以将它们连接在一起(基于your prior question's example):
joinTo:
'js/vendor.js': /^vendor(-wrapped)?[\\/](?!mocha|chai|sinon|sinon-chai)/
您可能会遇到一些供应商脚本,这些脚本的结构只是与AMD不兼容,即使在包装时也是如此,在这种情况下您的选择是不使用这些库,与作者合作以使其更新,或维护您自己的修改,使其与您的项目兼容。