使用requirejs optimizer.js组合非amd脚本文件时,如何跳过捆绑包末尾包含的定义?

使用requirejs optimizer.js组合非amd脚本文件时,如何跳过捆绑包末尾包含的定义?,requirejs,requirejs-optimizer,Requirejs,Requirejs Optimizer,我正在尝试使用requirejs中的r.js优化器优化我的javascript项目。我在我的项目中使用amd和非amd模块。将有两个环境,一个具有requirejs环境,另一个不具有requirejs环境。非requirejs环境中的文件不应具有on require或define调用。当使用r.js将amd模块组合成捆绑包时,在文件末尾使用捆绑包名称进行define调用是很好的。但是对于非requirejs环境,在优化文件之后,它们也会在文件末尾使用模块名进行define插入 假设我有四个文件A

我正在尝试使用requirejs中的r.js优化器优化我的javascript项目。我在我的项目中使用amd和非amd模块。将有两个环境,一个具有requirejs环境,另一个不具有requirejs环境。非requirejs环境中的文件不应具有on require或define调用。当使用r.js将amd模块组合成捆绑包时,在文件末尾使用捆绑包名称进行define调用是很好的。但是对于非requirejs环境,在优化文件之后,它们也会在文件末尾使用模块名进行define插入

假设我有四个文件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)
    }

})
这是文件的外观

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模块末尾的定义调用。如果是,如何使用?

我看到您使用了基于文档的选项,该选项应该对您有所帮助。我不知道为什么没有

您可以使用的另一个选项是,在构建完成后,在写入文件之前,您可以使用