2

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

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

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

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

例如:在运行 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 优化器访问每个文件并根据它提供的路径给我模块名称。

这可行吗?

4

1 回答 1

0

Requirejs 的作者 James Burke通过另一个论坛对此提供了答案。

我们可以通过使用 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
      });
    });
  });
});
于 2015-09-11T18:01:38.173 回答