欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

前端项目依赖包漏洞解决方案

最编程 2024-09-29 17:27:40
...

一般情况下,如果是package.json文件中的依赖包出现漏洞,我们可以直接到最新版本或者指定版本即可。

还有一种情况就是依赖包中的子依赖包甚至更深层级的包存在漏洞,这个时候改最外层包的版本并不能解决这个问题。

以下方案可以实现强制升级子包依赖,代码供参考:

1、正常提交package-lock.json文件到代码库

2、在package.json文件中的scripts配置项添加如下命令:

"preinstall": "npx force-resolutions"

"preinstall": "npx npm-force-resolutions"

如果上述命令报错可使用以下命令:

"preinstall": "npm install --package-lock-only --ignore-scripts && npx npm-force-resolutions"

3、在package.json文件中的resolutions配置项中添加需要升级的依赖版本,比如unset-value的无漏洞版本 为2.0.1,那么我们可以配置如下:

"resolutions": {
    "unset-value": "2.0.1"
  }

4、本地执行npm i 后提交package-lock.json文件

整个package.json文件看起来应该像这样:
{
  "name": "xxx-web",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "start": "npm run serve",
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint",
    "preinstall": "npx npm-force-resolutions",
  },
  "dependencies": {
    "axios": "0.24.0",
    "core-js": "3.19.1",
    "echarts": "5.2.1",
    ...
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "4.5.15",
    "@vue/cli-plugin-eslint": "4.5.15",
    "@vue/cli-plugin-router": "4.5.15",
    ...
  },
  "resolutions": {
    "unset-value": "2.0.1"
  }
}

推荐阅读