requirejs 优化器只定义模块名称

requirejs optimizer just define module name only

我想使用 requirejs 优化器 create/define 我的 js 文件的模块名称。

例如:如果我有一个文件说 test.js 在 modules/moduleA

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

我希望 requirejs 优化器根据路径为我创建模块名称...例如下面我希望 requirejs 优化器创建模块名称 modules/moduleA/test 并放入 test.js

例如: 在 运行 requireJS 优化器

之前

test.js内容:

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

在运行之后需要优化器

test.js内容

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

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

这样可行吗?

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
      });
    });
  });
});