这是我的requireJS优化器r.js构建配置的一部分。
exclude: [
'widgets/cr-log-display',
'widgets/cr-pager',
'widgets/cr-time-input'
我的问题很简单:是否可以排除以
widgets/
开头的所有依赖项。这些文档似乎并未表明可在此处传递正则表达式或类似内容。我还缺少另一个配置参数吗?
最佳答案
我很确定您不能将正则表达式传递给exclude
。我说这是因为阅读了r.js
的源代码。 exclude
的处理使用名为findBuildModule
的内部函数,该函数将传递给exclude
的内容与带有===
的模块名称进行比较。同样,没有办法告诉r.js
“排除此目录下的所有模块”。
我看到您可能可以使用的一种途径是onBuildWrite
,这是一个具有功能的全局设置。我已将其用于除您想要的目的之外的其他目的,但是也许可以达到目的:
onBuildWrite: function (moduleName, path, contents) {
return /^widgets\//.test(moduleName) ? "" : contents;
}
如果模块名称以
widgets/
开头,则将写入 bundle 包的内容将为空字符串,否则内容将与模块的内容恰好相同。请注意,这不会完全像
exclude
那样。 exclude
设置不包括列出的模块及其依赖性。上面的onBuildWrite
示例与excludeShallow
类似,因为将排除与正则表达式匹配的模块,但不会排除其依赖项。无法轻松编写onBuildWrite
函数来将排除范围扩展到要排除的模块的依赖项。 r.js
没有提供用于查询模块依赖性的API。