我是npm的新手,正在try 了解如何为部署重新创建node_modules目录.

我们使用npm ci而不是npm install,以确保部署过程中一尘不染.但是,当我们在没有任何标志的情况下运行它时,会出现以下错误:

修复upstream 依赖项冲突,或使用--force或--legacy peer dep重试此命令,以接受不正确(可能已损坏)的依赖项解析.

npm install--force的 Select 如下(npm ci106上没有旗帜):

-f或--force参数将强制npm获取远程资源,即使磁盘上存在本地副本.

同时,--legacy-peer-deps的文件中说:

--传统对等deps:以npm版本4到版本6的风格,在安装时忽略所有对等依赖项.

这两个标志似乎都可以让npm ci生成node_modules目录,而不会出现任何问题,但我仍然不清楚两者之间的区别.

据我所知,--force听起来像是在最后一次下载依赖项的基础上,并将覆盖任何以前下载的依赖项.同时,--legacy-peer-deps听起来似乎总是会在安装过程中跳过对等依赖项(无论它们是什么),即使没有问题.

这两个标志之间有什么区别,我们应该在什么时候使用它们?

推荐答案

在新版本的npm(v7)中,默认情况下,npm install遇到冲突peerDependencies时将失败.以前不是这样的.

查看here了解更多关于npm v7中对等依赖关系的信息.

两者的区别如下-

  • --legacy-peer-deps:以npm版本4到版本6的风格安装时忽略所有peerDependencies.

  • --strict-peer-deps:遇到任何冲突peerDependencies时,请失败并中止安装过程.默认情况下,npm只会因根项目的直接依赖关系导致peerDependencies个冲突而崩溃.

Node.js相关问答推荐

我的位置也移动时左右拖动谷歌 map

NPM:一般的npm二进制依赖可以静态构建吗?

在对象的嵌套数组中使用$lookup,创建多个记录作为响应,mongodb

车把模板引擎循环问题

我收到警告:发现函数rs-ms-v1不受支持的运行时nodejs18.x× 不受支持的运行时

如果我在父文件夹中运行,子进程生成不起作用

如何在 Firestore 函数上使用类型模型来获取字段值

使用 NPM 三个 mocha+typescript 进行测试

在将用作 nodejs/expressjs 中的中间件的函数中使用 keycloak.protect()

无法通过谷歌Electron 表格 api( node js)中的服务帐户访问写入

适用于 Windows 7 的 NodeJS

为什么 JavaScript 的 parseInt(0.0000005) 打印5?

如何将`yarn.lock`与`package.json`同步?

如何让should.be.false语法通过 jslint?

代理(如提琴手)可以与 Node.js 的 ClientRequest 一起使用吗

使用 pm2 编程 api 重命名进程

tsconfig.json 中模块类型的区别

Node.js 与 .net 中的异步/等待

为什么 Node.js 被命名为 Node.js?

webpack-dev-server 找不到模块webpack