踩坑:npm install 安装依赖,修改了项目 package

您所在的位置:网站首页 package文件打开方法被改了 踩坑:npm install 安装依赖,修改了项目 package

踩坑:npm install 安装依赖,修改了项目 package

2023-09-15 00:06| 来源: 网络整理| 查看: 265

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

之前运行项目的时候,我是看项目文档上写的是 npm install,遇到了问题,但是同事运行项目,在 master 可以跑起来。

下面是之前的对话:

小乐:小宇,运行后台项目,出现这个报错,是要修改什么吗?

image.png

小宇:重新装包

小乐:好的,我试下

过了一段时间。

小乐:我看那个 node_modules 文件夹下面,是有对应的文件夹,访问页面还是不行,要怎么处理吗?

小宇:稍等,我看看,为什么我的 master 能运行呢?

3840950611_42676672961_CA5AC834-DD52-43db-BAE3-3A373A9DB592.png

小乐:npm install,安装之后,package-lock.json 应该被修改了

小宇:你千万别用npm install,要用npm ci。一般写了是npm install 的话,要是项目里有package-lock都要用npm ci

小乐:好

之前留下来一个疑问,就是为什么使用 npm ci 安装就好了,为什么 npm install 安装依赖,会修改项目的 package-lock.json???接下来就来看看。

npm install 和 npm ci 有什么区别呢? npm install

npm install,或者 npm i,通常是用来安装依赖项:

它将会安装 Node.js 项目所有的依赖项; 如果使用 ^ 或 ~ 来匹配依赖项的版本时,则 npm 可能无法安装确切版本; 利用 npm install 安装新依赖项时,会更新 package-lock.json。 npm ci

别被它的名字骗了。npm ci 并不仅仅适用于持续集成系统,在日常开发中,npm ci 非常实用。和 npm install 不同,npm ci 根据 package-lock.json 安装依赖,这可以保证整个开发团队都使用版本完全一致的依赖,避免把时间浪费在排查因为依赖不一致而导致的各种奇怪问题上。

不仅如此,npm ci 还有一个很好的副作用,加快 node 模块安装速度。因为 npm ci 直接根据 package-lock.json 中指定的版本安装,无需计算求解依赖满足问题,在大多数情况下都可以大大加速 node 模块安装过程。

使用 npm ci,会发生:

自动删除 node_modules。当 npm ci 时,如果 node_modules 存在,则自动删除它,这是为了保证一个干净的 node_modules 环境,避免遗留旧版本库的副作用。 package-lock.json 必须存在。package-lock.json 用于锁住 package 的版本号,避免在生产环境中因版本导致的构建错误或者运行时错误,对于前端工程化也意义非凡。简单来说,就是 npm ci 根据 package-lock.json 安装依赖 不像 npm install,npm ci 不会修改你的 package-lock.json。但是它确实期望你的项目中有一个 package-lock.json 文件 - 如果你没有这个文件,npm ci 将不起作用,此时必须使用 npm install。 不能单独装包。这一条很容易解释,它适用于持续集成环境中,无法单独装包,例如无法仅仅安装 lodash。 npm ci vs. npm install — 该用哪一个?

如果你使用 npm v6+ :

使用 npm install 安装新的依赖项,或更新现有的依赖项(例如,从版本1到版本2); 在持续集成工具中运行时使用 npm ci,或者某些不修改 package-lock.json 的情况下安装依赖项。

如果你使用 npm v5 或者更低的版本:

只能通过 npm install 来安装或者更新依赖项; 尝试升级到最新的 npm 版本。除了npm ci 之外,它还具有 npm audit 命令,可以更轻松地识别和修复依赖项的安全漏洞。此外,使用 npm v6 安装依赖项应该更快。 写到最后

关于使用 npm ci 的场景,它应该是这样的:

在有 package-lock.json 的项目,我们可以推荐使用 npm ci 来替代 npm install,这样的话,就可以避免一些不必要的麻烦啦。

参考资料 你可能不知道的 npm 实用技巧 npm ci vs. npm install 生产环境中使用 npm ci 代替 npm i

完。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3