requirejs优化器只是定义模块名称

时间:2015-07-21 18:17:49

标签: javascript requirejs requirejs-optimizer

我想使用requirejs优化器来创建/定义我的js文件的模块名称。

例如:如果我有一个文件说模块/ moduleA下的test.js

modules
|
|
-----moduleA
     |
     -----test.js

我希望requirejs优化器根据路径为我创建模块名称...例如下面我想要requirejs优化器来创建模块名称modules / moduleA / test并放入test.js中的define目录

例如: 在运行requireJS优化器之前

test.js内容:

define( ["my/cart", "my/inventory"],
            function(cart, inventory) {
               ...
           }
        );

运行requirejs优化器后

test.js内容

define("modules/moduleA/test",
            ["my/cart", "my/inventory"],
            function(cart, inventory) {
               ...
           }
        );

我稍后会通过grunt来处理相关的依赖文件...但是我希望requirejs优化器访问每个文件并根据它呈现的路径给我模块名称。

这可行吗?

1 个答案:

答案 0 :(得分:0)

Requirejs的作者James Burke通过另一个论坛提供answer to this

我们可以通过使用RequireJS的转换轻松完成此任务:

var requirejs = require('requirejs');
requirejs.tools.useLib(function(require) {
  require(['transform'], function (transform) {
     //todo: generate a files array with the list of files to concatenate.

      files.forEach(function(filePath) {
        var fullPath = path.join(targetDir, filePath);
        var contents = fs.readFileSync(fullPath, 'utf8');
        var moduleId = /* todo, figure out what the moduleId is for the module */
        var transformed = transform
                          .toTransport('', moduleId, fullPath, contents);

        //todo: concat the contents together
      });
    });
  });
});