如何配置require.context的正则仅匹配以1-开头的js文件?
你当前使用的/^1-.*\.js$/正则无法生效,核心原因是require.context的正则匹配对象是包含相对路径层级的完整路径字符串,而非纯文件名。比如放在子目录下的1-asd.js,传入正则的匹配值会是./子目录名/1-asd.js,路径开头的./和目录前缀会直接导致^1-的开头匹配规则失效。
方案1:匹配所有层级下符合规则的文件(递归扫描子目录)
使用以下正则即可匹配所有文件名以1-开头的.js文件,不受目录层级影响:
const folders = require.context("@/views", true, /\/1-[^/]+\.js$/, "lazy")
正则规则说明:
\/:匹配文件名前的最后一个路径分隔符/,锚定到文件名的起始位置1-:匹配文件名要求的开头前缀[^/]+:匹配文件名中除路径分隔符外的任意字符,避免跨目录匹配\.js$:匹配.js后缀,确保匹配路径以.js结尾
匹配效果验证:
./1-asd.js→ 匹配成功./business/1-order.js→ 匹配成功./2-user.js→ 匹配失败./business/2-goods.js→ 匹配失败./1-config.json→ 匹配失败
方案2:仅匹配根目录下的符合规则的文件
如果你不需要扫描子目录,只需要匹配@/views根目录下的文件,可以把第二个参数设为false关闭递归,原正则即可正常生效:
const folders = require.context("@/views", false, /^1-.*\.js$/, "lazy")
这种场景下传入正则的匹配值就是根目录下的纯文件名,没有路径前缀,因此开头匹配^1-可以正常命中。
内容的提问来源于stack exchange,提问作者Mert
相关产品推荐
相关产品推荐

