我是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相关问答推荐

为高流量网站优化Node.js实时通知服务

如何使用Node.js、Express和Mongoose创建多个API

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

如何从shell脚本中计算ecmascript模块?

如何使用Nextjs路由从下一步/导航在新选项卡中通过";router.ush";打开链接

在 Docker 容器内创建一个 cron 作业(job)来执行 run.js 文件中的函数

为什么我不能将 id 发送到后端并通过 findByIdAndRemove() 删除项目?

Typescript 条件语句不过滤值?

使用 Node.js 在 MongoDB 中搜索

fs.writefile 选项参数的可能值,尤其是只读文件的整数

通过 npm 导入 Sass

带有 node.js 和 express 的基本网络服务器,用于提供 html 文件和assets资源

yarn.lock 和 npm 的 package-lock 有什么区别?

在 ExpressJS 中将变量传递给 JavaScript

Passport 登录和持久会话

NODEJS 进程信息

如何在 NodeJs 中下载和解压缩内存中的 zip 文件?

我可以在 Heroku 中运行咖啡脚本吗?

PhoneGap/Cordova Android 开发

要求('babel/register')不起作用