GruntJS 和自定义任务:需要一个 RequireJS 模块

GruntJS and custom task: require a RequireJS module

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

我描述了我的场景:

我有一个包含许多文件的基于 RequireJs 的项目。 我想 concatenate/minify/etc 项目来部署它并提高性能等

优化与 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文件优化项目

你知道我怎样才能做到这一点吗? 我对使用 way/tools/libs 没有任何限制。

可以在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 到 minify/concatenate 它们。