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
});
});
});
});
我想使用 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 }); }); }); });