本地测试@angular/cli的ng-add功能:如何Mock npm注册表?
本地测试Angular Schematics的ng-add功能解决方案
你遇到的这个问题其实挺普遍的——ng add默认会优先从npm仓库拉取包资源,哪怕你已经通过npm link关联了本地项目。不过不用愁,有几种实用的方法能让Angular CLI直接识别本地的schematics包,完全不需要Mock整个npm注册表:
方法一:直接指定本地包路径
这是最快捷的方式,不用修改任何配置,直接在ng add命令里传入本地schematics项目的绝对或相对路径就行:
ng add ./path/to/your/schematics-project
举个例子,如果你的schematics项目在当前测试项目的同级目录../my-feature-schematics里,就可以运行:
ng add ../my-feature-schematics
这样CLI会直接读取本地的包文件,跳过npm仓库的下载流程。
方法二:用npm pack生成本地压缩包测试
这种方式更贴近真实的npm安装场景,能同时验证包的打包是否正常:
- 进入你的schematics项目根目录,执行打包命令:
npm pack
这会生成一个类似my-library-1.0.0.tgz的压缩包文件。
2. 回到测试Angular项目,执行ng add并指定这个本地压缩包的路径:
ng add ./path/to/my-library-1.0.0.tgz
方法三:修改测试项目的依赖配置(长期测试用)
如果需要频繁测试,不想每次都输入路径,可以给测试项目的package.json添加本地依赖:
- 在测试项目的
package.json的dependencies字段里加入:
"my-library": "file:../path/to/your/schematics-project"
- 执行
npm install,npm会自动创建本地关联。 - 之后再运行
ng add my-library,CLI就会优先识别本地的包,不会再去npm仓库请求了。
另外要注意,确保你的schematics项目的package.json里已经正确配置了schematics字段,指向你的schematics集合入口文件,比如:
"schematics": "./schematics/collection.json"
这是CLI能找到ng-add逻辑的关键前提。
内容的提问来源于stack exchange,提问作者Maciej Treder
相关产品推荐
相关产品推荐

