npm install xxxx --legacy-peer-deps

阅读数:105 评论数:0

跳转到新版页面

分类

html/css/js

正文

一、概述

在使用npm下载依赖的时候,常常会遇到无法解析依赖树的问题(依赖冲突)。

unable to resolve dependency tree

这里使用--legacy-peer-deps就可以解决这个问题。

二、peerDependency

1、定义

开发过程中,在package.json文件里我们常见devDependencies(用于开发环境下依赖的模块)和dependencies(任何环境下都需要的依赖模块)。

而peerDependency,引用下文件解释:

Peer Dependencies: In package.json file, there is an object called as peerDependencies and it consists of all the packages that are exactly required in the project or to the person who is downloading and the version numbers should also be the same. That is the reason they were named as peerDependencies. The best example is ‘react’ which is common in every project to run similarly.

2、说明示例

假设我们现在有一个HelloHWCloud工程,已经在其根目录下的package.json文件中的dependencies字段里声明了packageA作为依赖,而其下面有两个项目app_A和app_B,它们也依赖packageA。如果我们用dependencies而不是peerDependencies来声明,那么npm install安装完项目之后的依赖结构如下:上面的文字,是不是读得有点蒙,以一个例子解释一下:

├── HelloHWCloud
│   └── node_modules
│       ├── packageA
│       ├── app_A
│       │   └── nodule_modules
│       │       └── packageA
│       └── app_B
│       │   └── nodule_modules
│       │       └── packageA

可以看到packageA依赖包被安装了3次。

而如果采用peerDependency来下载,就可以避免这个依赖库被重复下载的问题。我们在项目app_A和app_B的package.json文件里的peerDependencies字段声明一下核心依赖库packageA,然后在根目录的apckage.json文件里的dependencies字段也声明一下packageA。接着再执行npm install,生成的依赖结构就会如下:

├── HelloHWCloud
│   └── node_modules
│       ├── packageA
│       ├── app_A
│       └── app_B

3、npm v7之后

npm从版本v7开始,install默认以peerDependencies方式去下载了:

(1)如果用户在根目录的package.json文件里显式依赖核心库,那么各子项目里的peerDependencies声明将被忽略。

(2)如果用户没有显示依赖核心库,那么就按照子项目的peerDependencies中声明的版本依赖安装到项目根目录里。

而方式2就可能产一依赖冲突的问题:用户依赖的包版本与各子项目的包版本相互不兼容,导致安装过程中断。

三、--legacy-peer-deps如何解决依赖冲突

legacy的意思:

遗产/(软件或硬件)已过时但因使用范围广而难以替代的

npm install xxxx --legacy-peer-deps

命令用于绕过peerDependencies里依赖的自动安装,它使各modules之间的相同modules但版本不同的都下载,即保证各个引用的依赖之间对自身所使用的不同版本modules存。




相关推荐

一、概述 npm的全称是Node Package Manager,是随同NodeJS一起安装的包管理和发布工具。 不过现在更推荐使用pnpm工具,使用过pnpm就真得不太愿意用npm了,因此pnpm一

一、package.json package.json文件只能锁定大版本,也就是版本号的第一位,并不能锁定后面的小版本。 二、package-lock.json package-lock.json文件

yarn是Facebook发布的一款取代npm的包管理工具。 一、安装配置 1、安装 npm install -g yarn 2、设置

一、概述 yarn命令行 npm命令行 yarn npm yarn add package --dev npm install package --save-dev yarn a

一、准备工作 需要安装node.js pnpm全称是performant npm意为高性能的npm 1、depedencies和devDependencies的区别 (1)在webpack打包的时候,

一、使用pnpm新建项目 可以使用npm 或yarn或pnpm来初始化Vite项目 pnpm create vite xxx(项目名称) #选择vue #选择js cd xxx (进入项目目录) #安

一、概述 在 Node.js 项目中,如果你想要安装一个本地的库,你可以使用 npm 或 yarn 来链接到本地的文件系统。这通常用于开发和测试阶段,让你可以在不发布到 npm 注册表的情况下使用和测