Angular 8指定configuration构建时环境文件替换未生效
问题根因
你的自定义环境替换规则完全没有生效,核心是两个错误导致Angular CLI没有读取到你在angular.json中配置的internalprod构建规则:
- 执行命令的工作目录错误:你
cd进入src目录后执行构建,Angular CLI会从当前目录向上查找angular.json配置文件,进入src后无法定位到根目录下你配置了文件替换规则的配置文件,只会回退到默认的开发环境构建逻辑,不会触发你写的internalprod对应的替换规则。 - 构建命令语法错误:你写的
npm run ng build --configuration=internalprod存在语法问题,npm run后只能跟package.json中scripts块定义的脚本名称,npm run ng build会被npm识别为尝试运行名为ng build的脚本,而非执行ng命令加build参数;同时npm脚本透传参数需要加--分隔符,你写的参数根本没有传给底层的Angular构建进程。
修复步骤
按顺序调整即可:
- 切回项目根目录执行命令:回到存放
angular.json、package.json的一级目录,不要在src目录下执行构建命令。 - 使用正确的构建命令,二选一即可:
- 若你全局安装了Angular CLI,直接执行:
ng build --configuration=internalprod - 若要使用项目本地安装的Angular CLI,先确认
package.json的scripts块中存在"build": "ng build"配置,再执行:npm run build -- --configuration=internalprod
- 若你全局安装了Angular CLI,直接执行:
- (可选校验)如果改完上述两点仍不生效,全局搜索项目中所有引入environment的代码,确认导入路径统一指向
src/environments/environment.ts,不要写死导入其他环境文件,正确导入示例:import { environment } from '../environments/environment';
重新执行构建后,再检查dist目录下的产物,environmentName就会正确替换为你在environment.InternalProd.ts中配置的值。
内容的提问来源于stack exchange,提问作者Georgi Koemdzhiev
相关产品推荐
相关产品推荐

