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

如何在Angular生产构建(ng build --prod)中禁用ng-test执行?

解决Angular CLI生产构建时控制测试执行的问题

嘿,别担心,我来帮你理清楚这个问题!首先得明确一个核心点:默认情况下,ng build --prod本身并不会触发任何测试(包括Karma)的执行——Angular CLI的build和test是完全独立的命令,不会互相绑定。你遇到的问题大概率是CI/CD流程的配置问题,或者自定义脚本导致测试被连带执行了,下面一步步给你解决:

1. 先检查CI/CD的执行脚本

如果你的CI/CD环境里在执行ng build --prod的同时还跑了测试,那肯定是脚本里把npm test(或ng test)和构建命令写在一起了。比如:

// package.json里的scripts如果是这样
"scripts": {
  "build:prod": "npm test && ng build --prod"
}

这种情况下,只要把&& npm test删掉,改成:

"scripts": {
  "build:prod": "ng build --prod"
}

之后CI/CD里只执行npm run build:prod(或直接ng build --prod),就不会触发测试了。

2. 恢复.angular-cli.json的测试配置

你之前注释掉test配置段的操作其实没必要,而且可能会影响本地ng test命令的正常运行。test配置段是用来定义测试工具(比如Karma)的配置路径,不是控制build命令是否触发测试的开关,所以赶紧把那段配置恢复回来:

"test": { 
  "karma": { 
    "config": "./karma.conf.js" 
  } 
},

这样本地需要跑测试时,直接执行ng test就能正常启动Karma了。

3. 本地开发时的便捷方案

如果你想在本地开发时,实现“先跑测试再构建生产版本”的逻辑,可以自定义一个npm脚本,在package.json里添加:

"scripts": {
  "build:prod:with-test": "ng test --watch=false && ng build --prod"
}

之后本地需要测试后构建时,执行npm run build:prod:with-test即可;而CI/CD环境里依然只执行ng build --prod,完全不会触发测试。

额外说明(针对Angular 6+版本)

如果你的项目是Angular 6及以上,配置文件已经变成angular.json了,但逻辑是一样的:build和test是独立的targets,默认不会互相触发。只要CI/CD里只执行ng build --prod,就不会跑测试;本地需要测试时单独执行ng test即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:42:13