我正在尝试使用 requirejs 中的 r.js 优化器优化我的 javascript 项目。我在我的项目中同时使用 amd 和非 amd 模块。将有两种环境,一种有requirejs环境,另一种没有requirejs环境。非requirejs环境中的文件不应该有require或define调用。在使用 r.js 将 amd-modules 组合到包中时,可以在文件末尾使用包名称进行定义调用。但是对于文件优化后的非requirejs环境,它们也会在文件末尾使用模块名称获得定义插入。
假设我有四个文件 A 和 B,它们是 AMD 模块,C 和 D 是非 AMD 模块。
我的 build.js 是这样的
({
appDir: "../",
baseUrl: "./",
dir : "../../../output",
paths: {
A : '../somepath/to/A',
B : '../somepath/to/B'
},
modules : [
{
name : 'bundle1',
create : true,
include : ['A', 'B']
},
{
name : 'bundle2',
create : true,
include : ['C', 'D']
}
],
// removeCombined : true,
cjsTranslate: false,
optimizeCss : "none",
skipModuleInsertion: true,
optimize: "uglify",
fileExclusionRegExp: /^(((r|app.build)\.js)|(v0))$/,
keepBuildDir: false,
bundlesConfigOutFile: "bundles.js",
onModuleBundleComplete : function(data) {
console.log(data)
}
})
这是捆绑 amd 文件的样子。
define('A', function(){
//some stuff of A
});
define('B', function(){
//some stuff of B
});
define('bundle1',function(){});
捆绑的非amd文件看起来像
//some stuff of C
});
//some stuff of D
define('bundle2',function(){});
如何解决这种情况。我已经阅读了优化文档和 example.build.js。还是想不通。我错过了什么吗?有没有办法在非 amd 模块的末尾排除定义调用。如果是,如何?