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