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

Angular项目含git+ssh依赖包,ng build --prod时异常拉取npm源问题

解决Angular prod构建时错误拉取git+ssh自定义包的问题

我之前遇到过几乎一模一样的情况!明明本地开发一切正常,prod构建却非要去npmjs找自定义包,折腾了好一阵才解决,给你几个排查和解决的方向:

  • 确认Angular CLI使用yarn作为包管理器
    Angular CLI默认可能会 fallback 到npm,哪怕你平时用yarn。可以全局设置CLI的包管理器:

    ng config cli.packageManager yarn
    

    也可以在项目的angular.json里,针对build任务单独配置:
    在projects -> [你的项目名] -> architect -> build -> options中添加:

    "packageManager": "yarn"
    
  • 检查项目package.json中的依赖声明
    确保你的自定义包是明确用git+ssh URL声明的,比如:

    "my-package": "git+ssh://git@your-repo-host.com/your-username/my-package.git#main"
    

    别不小心写成了版本号格式(比如^1.0.0),这种情况下prod构建会自动去npmjs查找对应版本。

  • 重新生成yarn.lock文件
    有时候lock文件里的依赖条目可能有异常,哪怕你清了缓存。删掉项目根目录的yarn.lock,然后重新执行:

    yarn install
    

    生成新的lock文件后,再尝试ng build --prod。

  • 排查prod构建的优化配置
    Angular的prod模式会启用严格的优化和依赖解析,可能会把自定义包当成公共npm包处理。可以临时关闭优化验证:
    在angular.json的build options里设置:

    "optimization": false
    

    如果此时build正常,说明是优化环节的问题。可以把自定义包加入到allowedCommonJsDependencies中:

    "allowedCommonJsDependencies": ["my-package"]
    

    再开启优化重新构建。

  • 检查构建相关脚本
    看看项目的package.json里的scripts,有没有prebuild之类的钩子脚本,里面是不是不小心用了npm install?确保所有构建相关的命令都使用yarn。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:42:08