【问题标题】:Brunch: how to wrap vendor code in AMD modules?早午餐:如何在 AMD 模块中封装供应商代码?
【发布时间】:2015-07-07 08:46:24
【问题描述】:

我希望所有供应商代码都包含在 AMD 模块中。 我在我的 config.coffee 中定义了这个部分:

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

但似乎早午餐仅对“应用”文件夹文件使用 AMD 优化器。在没有任何类似 r.js 的预处理的情况下连接的所有供应商 js 文件(没有在“define(...)”语句中添加模块名称)。结果,Almond(和RequireJS几乎一样)在vendor文件执行过程中抱怨匿名模块定义。

这是我的完整配置:

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'

【问题讨论】:

    标签: javascript brunch


    【解决方案1】:

    您可以将配置中的 conventions.vendor 更改为与您的供应商文件不匹配的内容,以启用模块包装。

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

    【讨论】:

    • 谢谢,它现在适用于供应商文件。但我面临另一个问题。我想在我的项目中使用车把模板。所以我在我的配置中添加了这一行: 但是有一些代码(即handlebars-brunch/ns.js)在全局范围内期望Handlebars。那么,有没有办法在全局范围内导出 Handlebars 以及将其用作 AMD 模块的可能性?
    • 我将为此创建单独的问题。
    • 您的新问题更笼统,所以它是这样回答的。但是在您描述的特定情况下,问题可能是嵌入到 handlebars-brunch 插件中的 ns.js 脚本未与 amd 选项兼容,并且需要向该项目提交 PR得到解决。也许ns.amd.js 是必要的。
    • 虽然我不确定这是否只是您与conventions.vendor 混淆时的问题,在这种情况下不是覆盖它,而是放置您想要包装的供应商脚本在其他答案中描述的不同名称的目录中可能是您​​的解决方案。
    猜你喜欢
    • 2015-12-16
    • 2012-06-19
    • 2013-09-26
    • 2017-09-29
    • 1970-01-01
    • 2023-03-27
    • 2013-06-29
    • 2017-01-04
    • 2013-03-15
    相关资源
    最近更新 更多