【问题标题】:Building with Grunt and Requirejs使用 Grunt 和 Requirejs 构建
【发布时间】:2014-05-29 17:13:08
【问题描述】:

我正在创建一个 grunt 任务,用于使用 grunt-contrib-requirejs 构建一个带有 requirejs 的 javascript 项目

https://github.com/gruntjs/grunt-contrib-requirejs

这里是配置:

requirejs:
      compile:
        options:
          #appDir: './'
          baseUrl: "client"
          mainConfigFile: "client/main.js"
          name: "main"
          out: "build/main.js"
          wrap:
            start: ""
            end: ""

main.js 文件在子目录中需要 2 个其他文件。尽管此任务不会引发错误,但生成的构建文件不会运行浏览器。这些文件似乎是连接的,因为构建文件中仍然存在 require 调用。我希望 require 调用的 js 文件可以替代 require 调用,然后进行优化。我怎样才能做到这一点?

PS:上面的配置是用coffeescript写的。

【问题讨论】:

    标签: requirejs grunt-contrib-requirejs


    【解决方案1】:

    如果您希望编译后的 javascript 文件不包含 require()define() 调用,您可以使用 AMDclean npm 包并将其添加到您的选项对象中:

    onModuleBundleComplete: function (data) {
      var fs = require('fs'),
        amdclean = require('amdclean'),
        outputFile = data.path;
      fs.writeFileSync(outputFile, amdclean.clean({
        'filePath': outputFile
      }));
    }
    

    【讨论】:

    • 谢谢。但是输出的 javascript 仍然在安全包装器中,这会阻止全局变量的可见性。我怎样才能摆脱它?
    • @EternallyCurious 设置wrap: false.
    • 感谢工作。但是我在这里描述了另一个问题:stackoverflow.com/questions/23953007/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多