我一直在寻找一段时间,但我还没有找到解决问题的方法。我正在使用require.js并使用插件为一些模块动态加载数据
define(['Plugin!data', 'dependency'], function(data, dep) {
...
}
当我尝试使用r.js
将所有模块优化为单个构建时,会出现问题requirejs.optimize({
baseURL: '/js',
name: 'main',
...
})
优化器尝试通过插件加载数据。有没有办法避免这种情况?
即:如何告诉优化器不要使用插件格式的任何内容!...
答案 0 :(得分:1)
您可以在构建配置中使用exclude
来排除此类模块。例如:
({
baseUrl: "js",
dir: "build",
removeCombined: true,
optimize: "none",
modules: [
{
name: "built",
create: true,
include: [
"modA",
],
exclude: [
"text!./x.json",
],
},
],
})
虽然问题在于exclude
中没有模式匹配,但您最终必须单独列出每个模块,这在大型代码库中可能有点问题。
另一种方法是使用onBuildWrite
删除以text!
开头的所有模块:
({
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;
},
})