2015-04-28 120 views
1

我希望所有的供应商代码都被封装在AMD模块中。 我已经定义在我config.coffee本节:早午餐:如何在AMD模块中包装供应商代码?

modules: 
    wrapper: 'amd' 
    definition: 'amd' 

但好像早午餐采用AMD优化只为“应用程序”文件夹中的文件。所有供应商的js文件在没有任何类似r.js的预处理(没有在“define(...)”语句中添加模块名称)进行concatinated。因此,Almond(与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' 

回答

0

你可以改变你的配置conventions.vendor的东西,不会为了使模块包装符合您的供应商档案。

https://github.com/brunch/brunch/blob/master/docs/config.md#conventions

+0

谢谢,它现在适用于供应商文件。但我面临另一个问题。我想在我的项目中使用handlebars模板。所以我说这行我的配置: \t <插件: \t \t车把: \t \t包括: \t \t \t运行:假 \t \t \t AMD:真> 但是有一些代码(即handlebars- brunch/ns.js)期望在全球范围内使用Handlebars。那么,是否有办法在全球范围内出口Handlebars以及将其作为AMD模块使用的可能性? – Evgeny

+0

我要为此创建单独的问题。 – Evgeny

+0

你的新问题更一般,所以这就是它的答案。但是在你描述的特定情况下,问题可能是[ns.js](https://github.com/brunch/handlebars-brunch/blob/master/ns.js)脚本被放到了句柄中 - brunch插件没有与'amd'选项兼容,并且PR需要归档到该项目才能解决。也许'ns.amd.js'将是必要的。 – es128