Javascript 如何在requirejs优化期间排除插件依赖关系

Javascript 如何在requirejs优化期间排除插件依赖关系,javascript,requirejs,r.js,Javascript,Requirejs,R.js,我已经找了一段时间了,但还没有找到解决问题的办法。我正在使用require.js和一个插件来动态加载一些模块的数据 define(['Plugin!data', 'dependency'], function(data, dep) { ... } 当我尝试使用r.js将所有模块优化为单个构建时,问题就出现了 requirejs.optimize({ baseURL: '/js', name: 'main', ... }) 优化器尝试通过插件加载数据。有没有办法避免这

我已经找了一段时间了,但还没有找到解决问题的办法。我正在使用require.js和一个插件来动态加载一些模块的数据

define(['Plugin!data', 'dependency'], function(data, dep) {
    ...
}
当我尝试使用r.js将所有模块优化为单个构建时,问题就出现了

requirejs.optimize({
   baseURL: '/js',
   name: 'main',
   ...
})
优化器尝试通过插件加载数据。有没有办法避免这种情况


ie:如何告诉优化器不要使用插件的格式

您可以在构建配置中使用
排除
来排除此类模块。例如:

({
    baseUrl: "js",
    dir: "build",
    removeCombined: true,
    optimize: "none",
    modules: [
        {
            name: "built",
            create: true,
            include: [
                "modA",
            ],
            exclude: [
                "text!./x.json",
            ],
        },
    ],
})
但是,问题是在
exclude
中没有模式匹配,最终不得不单独列出每个模块,这在大型代码库中可能有点问题

另一种方法是使用
onBuildWrite
删除所有以
文本开头的模块

({
    baseUrl: "js",
    dir: "build",
    removeCombined: true,
    optimize: "none",
    modules: [
        {
            name: "built",
            create: true,
            include: [
                "modA",
            ],
        },
    ],
    // Use onBuildWrite to exclude modules loaded through plugin.
    onBuildWrite: function (moduleName, path, contents) {
        if (moduleName.lastIndexOf("text!", 0) === 0) {
            return "";
        }
        return contents;
    },
})