
Yarn 默认会锁定 Git 依赖的具体 commit SHA,导致 yarn install 不拉取 main 分支最新代码;解决关键在于更新 yarn.lock 中的 resolved 提交哈希,而非仅清缓存或重装 node_modules。
yarn 默认会锁定 git 依赖的具体 commit sha,导致 `yarn install` 不拉取 `main` 分支最新代码;解决关键在于更新 `yarn.lock` 中的 resolved 提交哈希,而非仅清缓存或重装 node_modules。
在使用私有 Git 仓库(如 GitLab)作为 npm 包源时(例如 "my-ui": "git+ssh://git@gitlab.example.com:group/my-ui.git#main"),Yarn 并不会实时追踪 main 分支的最新提交——它会在首次安装后,将当前解析出的 commit SHA(如 14f7fcc2199dd2aa261b738c32dacc721c78f0d2)硬编码写入 yarn.lock。后续 yarn install 均以此 SHA 为准进行复现安装,即使远程 main 已更新,Yarn 也完全无视。
✅ 正确做法是强制刷新 lockfile 中的 Git 解析结果:
-
删除
yarn.lock中对应条目(推荐):
找到yarn.lock中类似以下区块:"my-ui@git+ssh://git@gitlab.example.com:group/my-ui.git#main": version "1.0.0" resolved "git+ssh://git@gitlab.example.com:group/my-ui.git#14f7fcc2199dd2aa261b738c32dacc721c78f0d2"
整段删除,然后运行:
yarn install
Yarn 将重新解析
#main,获取最新 commit 并写入新 SHA。 -
使用
yarn upgrade-interactive(更可控):yarn upgrade-interactive --pattern my-ui
在交互界面中选中
my-ui,按空格确认升级,Yarn 会自动更新 lockfile 中的 resolved 值。
Git Repo Analyzer下载智能分析 Git 仓库或普通链接,自动识别内容类型并执行相应处理流程。 支持四种类型:1) OpenClaw Skills 项目(风险检测与收藏)2) 论文/文档项目(加入 dashifu——wiki 待处理队列)3) 功能项目(评估 OpenClaw 学习可行性)4) 普通网页/文章(加入 dashifu——w...
-
(不推荐)临时绕过 lockfile(仅调试用):
yarn install --no-lockfile
⚠️ 此命令会忽略
yarn.lock,但破坏可重现性,严禁用于 CI/CD 或团队协作环境。
? 补充建议:
- 若需持续集成中始终使用最新
main,可在 CI 脚本中加入sed -i '/my-ui@.*git/d' yarn.lock && yarn install(Linux/macOS); - 更稳健的长期方案是:为
my-ui启用语义化版本 + 私有 registry(如 Verdaccio),避免直接依赖分支; - 永远不要手动修改
yarn.lock中的 resolved SHA —— 必须通过 Yarn 命令触发解析,否则可能引发校验失败。
总结:Git 依赖的“过期”本质是 lockfile 的确定性机制所致,而非缓存问题。解决问题的核心不是 yarn cache clean,而是让 Yarn 主动重新解析并更新 yarn.lock。










