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

Angular 11配置:ng serve含测试目录 ng build --prod排除该目录

问题根源

你将排除testing目录的规则写在了architect.build.options全局公共配置节点下,ng serve默认加载的开发构建、ng build --prod加载的生产构建都会继承这部分公共配置,因此开发环境也会同步排除mock目录,无法满足调试需求。

配置实现步骤

该需求完全可以通过angular.json的多环境差异化配置实现,无需额外引入插件:

  • 修改公共构建配置
    调整architect.build.options.assets节点,移除针对testing目录的全局排除规则,保证开发环境默认全量引入assets下的内容。如果你原本就需要全局排除data/sample-files目录,保留对应规则即可:
    "assets": [
      "src/favicon.ico",
      {
        "glob": "**/*",
        "ignore": ["**/data/sample-files/**/*"],
        "input": "src/assets",
        "output": "/assets"
      }
    ]
    
  • 新增生产环境专属资源规则
    在architect.build.configurations.production节点下新增assets配置项,在这里添加对testing目录的排除规则。生产构建时,该配置会覆盖公共配置中的assets规则,最终产物不会包含mock文件:
    "production": {
      "fileReplacements": [
        {
          "replace": "src/environments/environment.ts",
          "with": "src/environments/environment.prod.ts"
        }
      ],
      "assets": [
        "src/favicon.ico",
        {
          "glob": "**/*",
          "ignore": ["**/data/sample-files/**/*", "**/data/testing/**/*"],
          "input": "src/assets",
          "output": "/assets"
        }
      ],
      "optimization": true,
      "outputHashing": "all",
      "sourceMap": false,
      "namedChunks": false,
      "aot": true,
      "extractLicenses": true,
      "vendorChunk": false,
      "buildOptimizer": true
      // 其余原有生产配置保持不变即可
    }
    

如果staging环境也需要排除testing目录,将上述相同的assets配置复制到architect.build.configurations.staging节点下即可。

效果验证
  • 执行ng serve启动开发服务后,可正常访问/assets/data/testing/路径下的mock文件,文件修改会触发热更新,满足开发调试要求
  • 执行ng build --prod完成生产构建后,查看dist输出目录的assets/data路径,不会存在testing目录,符合发布包要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 15:09:34