Docusaurus能否读取文件夹内所有文件?sidebar.js是否支持通配符动态加载文件?
Docusaurus相关问题解答
1. Docusaurus能否读取文件夹中的所有文件?
当然可以!Docusaurus本身就支持自动识别指定目录下的文件,不同场景的实现方式略有不同:
- 文档模块:把Markdown/MDX文件放在你配置的文档根目录(默认是
docs),Docusaurus就能自动识别这些文件。如果要让它们在侧边栏展示,只需要配置对应的自动生成规则即可。 - 博客模块:默认的
blog目录下,所有符合命名规范的Markdown文件都会被自动转化为博客文章,完全不用手动添加到配置里。 - 自定义页面:
src/pages目录下的文件会被自动识别为网站页面,路由直接对应文件名,比如src/pages/about.md会对应/about路径。
2. 能否用通配符实现侧边栏动态读取文件夹内所有文件?
必须可以!你完全不用手动逐个添加文件到sidebar.js,Docusaurus提供了自动生成侧边栏的功能,能基于目录结构或通配规则动态加载文件。
方法一:用autogenerated类型配置侧边栏
直接修改sidebar.js,通过autogenerated指定要扫描的目录,它会自动根据文件夹结构生成分类和条目:
module.exports = { docs: [ { type: 'autogenerated', dirName: '.', // 扫描当前docs根目录下的所有文件 }, ], };
如果只想针对特定子目录(比如你例子里的widgets)自动生成,可以这样配置:
module.exports = { docs: [ { type: 'category', label: 'Docs', items: [ { type: 'autogenerated', dirName: 'widgets', // 自动扫描docs/widgets下的所有文件 }, { type: 'autogenerated', dirName: 'next', // 自动扫描docs/next下的所有文件 label: 'Next category' } ] } ] };
方法二:结合插件配置过滤文件
你还可以在docusaurus.config.js的plugin-content-docs插件中,通过include和exclude字段用通配符过滤文件,再配合侧边栏自动生成:
module.exports = { plugins: [ [ '@docusaurus/plugin-content-docs', { path: 'docs', routeBasePath: 'docs', include: ['**/*.md', '**/*.mdx'], // 匹配所有md和mdx格式文件 exclude: ['**/_*.md', '**/_*.mdx'], // 排除下划线开头的文件(通常是草稿或配置文件) sidebarPath: require.resolve('./sidebars.js'), }, ], ], };
另外,如果你想自定义文件在侧边栏的排序顺序,可以在Markdown文件的front matter里添加sidebar_position字段,比如:
--- sidebar_position: 1 --- # 快速开始
内容的提问来源于stack exchange,提问作者Adrian Rosca
相关产品推荐
相关产品推荐

