resolutions
    
    是一个用于解决依赖项冲突的
    
     npm
    
    特殊字段。在某些情况下,您的项目依赖项可能需要不同的版本,而这些版本之间可能存在冲突。这时候,您可以使用
    
     resolutions
    
    字段来指定应该使用哪个版本,以解决这些冲突。
   
    例如,如果您的项目依赖于
    
     package-a
    
    和
    
     package-b
    
    ,而这两个包都依赖于
    
     package-c
    
    ,但它们依赖于
    
     package-c
    
    的不同版本,这会导致冲突。在这种情况下,您可以在
    
     package.json
    
    文件中使用
    
     resolutions
    
    字段来指定应该使用哪个版本。例如:
   
{
  "dependencies": {
    "package-a": "^1.0.0",
    "package-b": "^2.0.0"
  },
  "resolutions": {
    "package-c": "^1.2.0"
  }
}
    在这个示例中,我们指定了
    
     package-c
    
    的版本应该是
    
     ^1.2.0
    
    。这意味着当
    
     npm
    
    安装依赖项时,它将使用
    
     1.2.x
    
    系列中的最新版本来解决
    
     package-a
    
    和
    
     package-b
    
    之间的冲突。
   
    需要注意的是,
    
     resolutions
    
    字段只在您的项目依赖项中出现冲突时才需要使用。在大多数情况下,
    
     npm
    
    可以自动解决依赖项之间的冲突,而无需使用
    
     resolutions
    
    字段。
   
当某些安全扫描工具(例如fossa)扫描出项目依赖的子依赖版本需要升级的情况,也可以尝试使用此方法来解决。
在package.json文件里添加跟scripts、dependencies、evDependencies平级的resolutions,把想要强制升级的子依赖期望版本写入,scripts里添加配置”preinstall”: “npx force-resolutions”,最后像启动项目一样使用npm run preinstall运行下载,最后达成目的。
{
  "name": "xxx",
  "version": "1.0.0",
  "description": "xxx",
  "author": "xxx",
  "private": true,
  "scripts": {
    "dev": "webpack-dev-server --inline --hot --progress --config build/webpack.dev.conf.js",
    "start": "npm run dev",
    "unit": "jest --config test/unit/jest.conf.js --coverage",
    "e2e": "node test/e2e/runner.js",
    "test": "npm run unit && npm run e2e",
    "build": "node build/build.js",
    "preinstall": "npx force-resolutions"
  },
  "dependencies": {
    "@types/echarts": "0.0.13",
    "ajv": "^6.12.6",
    "awe-dnd": "^0.3.4",
    "axios": "^0.26.0",
    "babel-polyfill": "^6.26.0"
  },
  "devDependencies": {
    "vue-template-compiler": "^2.6.11",
    "webpack": "^3.12.0",
    "webpack-bundle-analyzer": "^2.13.1",
    "webpack-merge": "^4.2.2"
  },
  "resolutions": {
    "lodash.template": "4.5.0",
    "eventsource": "1.1.1",
    "ms":"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
  },
  "engines": {
    "node": ">= 12.0.0",
    "npm": ">= 3.0.0"
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not ie <= 8"
  ]
} 
