Astro glob()中的`**\/[^_]*.md`匹配规则及与`**\*.md`的差异咨询
Astro glob()中的
**\/[^_]*.md匹配规则及与**\*.md的差异咨询 嘿,我来给你掰扯清楚这两个glob模式的区别,其实很好理解的!
先看最基础的**\*.md:这个规则会匹配所有子目录里的所有.md文件——不管文件名开头是啥,只要后缀是.md,都会被它捞进来,连那些下划线开头的配置/模板文件也不会放过。
再看**\/[^_]*.md:这里的关键是[^_],在glob语法里,方括号加脱字符[^]表示“排除指定字符”,所以[^_]就是「文件名第一个字符不能是下划线_」的意思。换句话说,这个规则会匹配所有子目录里文件名不以_开头的.md文件,那些下划线开头的特殊文件(比如Astro里常用的_layout.md、_partial.md这类作为组件或局部模板的文件)会被自动过滤掉。
在Astro的内容集合场景里,这个过滤很实用——因为下划线开头的文件一般是用来做复用模板、配置片段的,不是我们要发布的内容文档,用**\/[^_]*.md就能精准只加载真正的内容文件啦。
总结下核心差异:
**\*.md:无差别匹配所有子目录下的.md文件**\/[^_]*.md:只匹配子目录下文件名不以_开头的.md文件
备注:内容来源于stack exchange,提问作者thomi
相关产品推荐
相关产品推荐

