You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docusaurus构建过程中排除指定文件夹?

解决Docusaurus中开发文件夹不被Build包含且禁止URL访问的问题

你遇到的问题是侧边栏隐藏只是移除了导航入口,但文件夹内容仍会被Docusaurus编译到build产物里,所以能通过直接URL访问。要彻底解决需要从阻止编译和禁止访问两个层面处理:

1. 阻止Build时包含目标文件夹

修改项目根目录的docusaurus.config.js,在@docusaurus/preset-classic的docs配置中添加exclude规则,匹配你的开发文件夹路径。假设你的开发文件夹名为dev-docs,配置如下:

module.exports = {
  // ...其他配置
  presets: [
    [
      '@docusaurus/preset-classic',
      {
        docs: {
          // 添加exclude规则,匹配目标文件夹下所有内容
          exclude: ['**/dev-docs/**'],
          // ...其他docs配置项
        },
      },
    ],
  ],
};

执行docusaurus build时,该文件夹下的所有文件都会被排除,不会出现在最终的build目录中。

2. 开发环境下禁止访问目标路径

如果在开发模式(npm start)下也不想让用户通过URL访问该文件夹,可以通过自定义Webpack配置拦截请求:
在docusaurus.config.js中添加自定义插件:

module.exports = {
  // ...其他配置
  plugins: [
    () => ({
      configureWebpack(config) {
        return {
          devServer: {
            before(app) {
              // 拦截所有指向dev-docs的请求,返回404
              app.get('/docs/dev-docs/*', (req, res) => {
                res.status(404).send('Not Found');
              });
            },
          },
        };
      },
    }),
  ],
};

更简单的替代方案

如果不需要把开发文件夹放在docs目录下,直接将它移到项目根目录(比如命名为dev-files),Docusaurus默认只会处理docs、blog等约定目录,这样该文件夹既不会被编译,也无法通过URL访问。

你的项目依赖参考

"dependencies": {
    "@docusaurus/core": "2.0.0-alpha.66",
    "@docusaurus/preset-classic": "2.0.0-alpha.66",
    "react": "^16.8.4",
    "react-dom": "^16.8.4",
    "swagger-ui-react": "^3.49.0"
  },
  "scripts": {
    "start": "docusaurus start",
    "build": "docusaurus build",
  },  
  "resolutions": {
    "babel-plugin-dynamic-import-node": "2.3.3"
  },

内容的提问来源于stack exchange,提问作者jolly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 05:13:23