Javascript 早午餐:如何在AMD模块中包装供应商代码?
我希望所有的供应商代码包装在AMD模块。 我已在我的config.coffee中定义了此部分:Javascript 早午餐:如何在AMD模块中包装供应商代码?,javascript,brunch,Javascript,Brunch,我希望所有的供应商代码包装在AMD模块。 我已在我的config.coffee中定义了此部分: modules: wrapper: 'amd' definition: 'amd' 但早午餐似乎只对“应用”文件夹文件使用AMD优化器。所有供应商js文件在没有任何类似r.js的预处理的情况下浓缩,没有在定义中添加模块名称。。。声明。因此,这几乎与RequireJS在供应商文件执行期间抱怨匿名模块定义相同 这是我的完整配置: exports.config = paths:
modules:
wrapper: 'amd'
definition: 'amd'
但早午餐似乎只对“应用”文件夹文件使用AMD优化器。所有供应商js文件在没有任何类似r.js的预处理的情况下浓缩,没有在定义中添加模块名称。。。声明。因此,这几乎与RequireJS在供应商文件执行期间抱怨匿名模块定义相同
这是我的完整配置:
exports.config =
paths:
public: 'public'
files:
javascripts:
defaultExtension: 'js'
joinTo:
'js/app.js': /^app/
'js/vendor.js': /^vendor[\\/](?!mocha|chai|sinon|sinon-chai)/
'js/tests.js': /^test/
'js/tests-vendor.js': /^vendor[\\/](?=mocha|chai|sinon|sinon-chai)/
order:
before: [
'bower_components/almond/almond.js',
'bower_components/jquery/jquery.js',
'bower_components/lodash/dist/lodash.underscore.js'
]
stylesheets:
defaltExtension: 'less'
joinTo:
'css/styles.css': /^(vendor[\\/](?!mocha|chai|sinon|sinon-chai)|app)/
'css/tests-vendor.css': /^(vendor[\\/](?=mocha|chai|sinon|sinon-chai))/
templates:
defaultExtension: 'hbs'
joinTo: 'js/app.js'
modules:
wrapper: 'amd'
definition: 'amd'
您可以将配置中的conventions.vendor更改为与供应商文件不匹配的内容,以便启用模块包装
谢谢,它现在适用于供应商文件。但我面临另一个问题。我想在我的项目中使用把手模板。所以我在我的配置中添加了这几行代码:但是有一些代码,比如handlebars-bunch/ns.js,它们期望在全局范围内使用handlebars。那么,有没有一种方法可以在全球范围内出口车把,以及将其用作AMD模块的可能性?我将为此单独提出一个问题。你的新问题更一般,所以这就是答案。但在您描述的特定情况下,问题可能是烘焙到handlebars早午餐插件中的脚本与amd选项不兼容,需要向该项目提交PR以解决该问题。也许需要一个ns.amd.js。虽然我不确定这是否只是当你弄乱conventions.vendor时的一个问题,在这种情况下,不要覆盖它,而是将你想要包装的供应商脚本放在一个不同名称的目录中,如其他答案中所述,这可能是你的解决方案。