Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript requirejs优化器仅定义模块名称_Javascript_Requirejs_Requirejs Optimizer - Fatal编程技术网

Javascript requirejs优化器仅定义模块名称

Javascript requirejs优化器仅定义模块名称,javascript,requirejs,requirejs-optimizer,Javascript,Requirejs,Requirejs Optimizer,我想使用requirejs优化器为我的js文件创建/定义模块名 如果我有一个文件,在modules/moduleA下说test.js modules | | -----moduleA | -----test.js 我希望requirejs优化器仅根据路径为我创建模块名…例如下面我希望requirejs优化器创建模块名modules/moduleA/test,并将其放入test.js中的define中 例如: 在运行requireJS优化器之前 test.js内容: defi

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

如果我有一个文件,在modules/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 optimizer访问每个文件,并根据它显示的路径给我模块名


这可行吗?

Requirejs的作者詹姆斯·伯克(James Burke)通过另一个论坛提供了一份报告

通过使用RequireJS的转换,我们可以轻松做到这一点:


谢谢@Louis的编辑。现在看起来很完美。谢谢你的帮助
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
      });
    });
  });
});