【问题标题】:GruntJS and custom task: require a RequireJS moduleGruntJS 和自定义任务:需要一个 RequireJS 模块
【发布时间】:2015-05-20 12:58:02
【问题描述】:

我对 GruntJS 很陌生,我想知道是否有可能有一个任务加载一些 RequireJs 模块来处理它们并将结果写入 JS 文件中。

我描述我的场景:

我有一个基于 RequireJs 的项目,其中包含许多文件。 我想连接/缩小/等项目来部署它并提高性能等。

优化与grunt-contrib-requirejs 插件完美配合。 grunt-contrib-requirejs 插件与 main.js 文件一起使用,我应该需要动态生成它。

我想生成main.js处理项目的一些RequireJS模块(称它们为fileA.jsfileB.js)。 我想使用生成的main.js 来运行grunt-contrib-requirejs 插件。

所以任务序列应该是这样的:

自定义任务:

  1. 加载fileA.jsfileB.js
  2. 将它们合并在一起
  3. 将合并的结果写入一个新的 JS 文件中

grunt-contrib-requirejs任务:

  1. 使用生成的main.js文件优化项目

你知道我怎样才能做到这一点吗? 我对使用方式/工具/库没有任何限制。

【问题讨论】:

  • 你想让我们给你你列出的程序的详细代码吗?提到的程序是标准的做法,你只需要实现它......
  • @Vishwanath 感谢您的回复。我将设置一个 GitHub 存储库来向您展示我的意思。再次感谢您。
  • @Vishwanath 在这里您可以找到该项目。 github.com/danielefenix/requirejs-grunt-dynamic-main
  • staticMain.js 有什么问题?
  • 顺便说一句,您可以使用幻像浏览器任务来模拟负载,然后从顶级对象读取 requirejs.s.contexts._.defined 属性。

标签: gruntjs requirejs grunt-contrib-requirejs


【解决方案1】:

你可以在Grunt中加载RequireJS,如下:

var requirejs = require('requirejs');

然后您可以通过 Grunt 获取树中的所有 fileX.js 文件:

grunt.file.recurse('js/modules/', function callback(abspath, rootdir, subdir, filename) {
    if (filename === 'fileX.js') {
      /* Do something here. */  
    }
}

获得所需的所有模块后,您可以使用r.js 来缩小/连接它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 2023-03-29
    • 2019-01-15
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多