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
相关产品推荐
相关产品推荐

