如何强制Cypress Schematic安装指定版本的Cypress?
强制
ng add @cypress/schematic安装指定版本Cypress的方法 默认执行ng add @cypress/schematic会拉取最新版Cypress,由于Cypress 10+存在大量破坏性变更、Cucumber适配资料不全,需要固定安装9.x版本同时保留schematic对Angular CLI命令的接管能力(比如替换ng e2e默认的Protractor配置),可按以下方案操作:
方案一:直接通过schematic参数指定版本(推荐)
@cypress/schematic的add命令原生支持传入Cypress版本参数,执行命令时直接指定需要的9.x版本即可,该命令会自动完成Angular配置修改、命令接管、指定版本依赖安装全流程:
ng add @cypress/schematic --cypressVersion 9.7.0
执行完成后做两项校验:
- 检查
package.json的devDependencies字段,确认cypress版本为9.x系列 - 检查
angular.json中e2e构建器配置,确认builder值为@cypress/schematic:cypress,此时执行ng e2e会直接启动Cypress,不会再触发Protractor。
方案二:跳过依赖安装后手动装指定版本(参数不生效时的兜底方案)
如果传参后版本拉取不符合预期,可以先让schematic完成配置写入,再手动安装对应版本Cypress:
- 执行带跳过安装参数的add命令,这一步只会完成angular.json配置修改、Cypress目录初始化、npm脚本注入,不会安装npm依赖:
ng add @cypress/schematic --skip-install
- 确认
angular.json中的e2e builder已经替换为Cypress对应的构建器后,手动安装指定版本的Cypress:
npm install --save-dev cypress@9.x.x
注意:不要先手动安装Cypress再执行
ng add @cypress/schematic,这种操作顺序下schematic不会自动替换ng e2e的构建器配置,会导致e2e命令依旧被Protractor接管。
内容的提问来源于stack exchange,提问作者Kyle Vassella
相关产品推荐
相关产品推荐

