如果npm安装的两个插件依赖同一个库,暴露给用户安装,但是版本不一样,要如何解决?

问题描述

假设我要安装A和B两个插件,A和B都依赖同一个C库,都需要用户自己去安装,但是各自依赖的C的大版本不一样,遇到这种问题,应该如何解决?

你期待的结果是什么?实际看到的错误信息又是什么?

我期待能够同时使用两个版本的C。但实际,后安装的C版本会覆盖先安装的C版本。

阅读 6.4k
2 个回答

npm 6.9 以后可以使用别名安装同一个包的不同版本。

比方说这样:

npm install demo2@npm:demo@2.0
npm install demo1@npm:demo@1.0

这样 package.json 里就会多出来:

"dependencies": {
  "demo2": "npm:@demo@2.0",
  "demo1": "npm:@demo@1.0"
}

然后写 requireimport 的时候就要变成 require('demo2') 这样。

因为你这个 A 跟 B 都是 npm 安装的,那么你就需要去 node_modules 目录底下改它们的源码了。

1、升级npm到7,npm install -g npm@7

2、检查packag-lock.json的依赖

{
  "node_modules/A/node_modules/C": {
    "version": "7.2.0",
  },
  "node_modules/B/node_modules/C": {
    "version": "8.10.0",
  }
}

如果安装后的包描述文件如上,则OK了

推荐问题