Gitlab CI中Yarn项目引入npm依赖触发package-lock.json告警解决方案问询
解决方案
规避告警的可行方案
- 配置Yarn全局关闭lock文件告警
针对Yarn v1版本,在项目根目录新建/编辑.yarnrc文件,添加如下配置即可关闭所有非Yarn lock文件的告警提示,不影响依赖安装和运行逻辑,对现有流程侵入性最低:disable-lockfile-warning true - CI阶段定向删除目标依赖的package-lock.json
在执行yarn install前新增脚本步骤,删除对应依赖内置的package-lock.json文件,你可以选择将逻辑写入preinstall钩子自动执行:
未全局安装// package.json scripts配置示例 { "scripts": { "preinstall": "rimraf ./node_modules/<target-package-name>/package-lock.json" } }rimraf的情况下可以替换为npx rimraf,或者直接使用rm -f命令。 - Fork依赖仓库移除冗余lock文件
直接Fork该Github依赖仓库,删除仓库内的package-lock.json后,将项目依赖地址替换为你的Fork仓库地址,永久规避该告警。
针对特定依赖单独使用npm安装的实现方法
该需求可以实现,调整依赖安装流程即可:
- 先从项目package.json的依赖声明中移除该Github依赖,避免Yarn自动拉取安装
- 在CI流程中,执行完
yarn install后新增单独的npm安装步骤,定向安装该依赖:
加入npm install git+<github-repo-url>#<commit-hash/branch/tag> --no-save--no-save参数可以避免npm修改项目根目录的package.json和生成package-lock.json,不影响原有Yarn包管理逻辑。 - 如果需要本地开发也复用该逻辑,可以将上述npm安装命令写入package.json的
postinstall钩子,每次Yarn安装完成后自动执行。
内容的提问来源于stack exchange,提问作者L. Pier Roberto
相关产品推荐
相关产品推荐

