Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 早午餐:如何在AMD模块中包装供应商代码?_Javascript_Brunch - Fatal编程技术网

Javascript 早午餐:如何在AMD模块中包装供应商代码?

Javascript 早午餐:如何在AMD模块中包装供应商代码?,javascript,brunch,Javascript,Brunch,我希望所有的供应商代码包装在AMD模块。 我已在我的config.coffee中定义了此部分: modules: wrapper: 'amd' definition: 'amd' 但早午餐似乎只对“应用”文件夹文件使用AMD优化器。所有供应商js文件在没有任何类似r.js的预处理的情况下浓缩,没有在定义中添加模块名称。。。声明。因此,这几乎与RequireJS在供应商文件执行期间抱怨匿名模块定义相同 这是我的完整配置: exports.config = paths:

我希望所有的供应商代码包装在AMD模块。 我已在我的config.coffee中定义了此部分:

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时的一个问题,在这种情况下,不要覆盖它,而是将你想要包装的供应商脚本放在一个不同名称的目录中,如其他答案中所述,这可能是你的解决方案。