当前位置:首页 > 科技  > 软件

快试试 save exact,防止你的项目依赖版本滑动

来源: 责编: 时间:2023-11-02 09:09:17 437观看
导读如果你正在构建一个生产应用程序,你并不总是希望让你项目的依赖项自动更新,即使您只指定了一个 PATCH 更新,由于有数百个互操作包,因此有可能出现未经测试的更新会毁掉你的项目,那么你一样要试试 save-exact。在开发过程中

如果你正在构建一个生产应用程序,你并不总是希望让你项目的依赖项自动更新,即使您只指定了一个 PATCH 更新,由于有数百个互操作包,因此有可能出现未经测试的更新会毁掉你的项目,那么你一样要试试 save-exact。在开发过程中以及使用应用程序时,可以安全地允许补丁或次要更新。vrK28资讯网——每日最新资讯28at.com

我们先来看一个最简单的测试,例如我在项目依赖了两个包:vrK28资讯网——每日最新资讯28at.com

"devDependencies": {  "@babel/cli": "^7.10.5",  "@babel/plugin-transform-runtime": "^7.11.0"}

当删除 node_modules 文件夹并运行时 npm install,已安装软件包的版本可能会在更高版本可用时更新,原因是安装的依赖产生了滑动,这可能会破坏应用程序,不同版本的的特效可能存在不一致的场景,这其实是非常危险的。vrK28资讯网——每日最新资讯28at.com

图片图片vrK28资讯网——每日最新资讯28at.com

图片图片vrK28资讯网——每日最新资讯28at.com

^ 会匹配最新的大版本依赖包,比如 ^1.2.3 会匹配所有 1.x.x 的包,包括 1.3.0,但是不包括 2.0.0。vrK28资讯网——每日最新资讯28at.com

save-exact

使用 save-exact 后,保存到 package.json 的依赖项将使用精确的版本进行配置,而不是使用 npm 的默认 semver 范围运算符。vrK28资讯网——每日最新资讯28at.com

使用

在项目中可以通过 .npmrc / .yarnrc 来对 save-exact 进行配置。vrK28资讯网——每日最新资讯28at.com

#.npmrcsave-exact=true
#.yarnrcsave-prefix ~

当我们再次安装使用 yarn add react 时,你会发现不会有滑动版本。vrK28资讯网——每日最新资讯28at.com

图片图片vrK28资讯网——每日最新资讯28at.com

.npmrc / .yarnrc 的配置是项目级别的。你也可以针对某一个依赖使用 save-exact。例如:vrK28资讯网——每日最新资讯28at.com

yarn add react --save-exact

图片图片vrK28资讯网——每日最新资讯28at.com

这样也能达到同样的效果。并且你还可以通过设置用户级别的 npm config 来达到效果。vrK28资讯网——每日最新资讯28at.com

npm config set save-exact true

不过这里需要注意的是,它们是有优先级的。vrK28资讯网——每日最新资讯28at.com

配置优先级

除了命令行 save-exact,当我们在使用 npmrc 配置时,按照依赖会检查配置,其实就是检查 .npmrc 的配置,在我们的电脑中存在多个 .npmrc 的配置。vrK28资讯网——每日最新资讯28at.com

1.项目中的 .npmrc

图片图片vrK28资讯网——每日最新资讯28at.com

项目下 .npmrc 文件的优先级最高,可以给每个项目配置不同的镜像,项目之间的配置互不影响。 在项目的根目录下新建 .npmrc 文件,在里面以 key=value 的格式进行配置。vrK28资讯网——每日最新资讯28at.com

save-exact=true

2.用户配置的 .npmrc(~/.npmrc)

图片图片vrK28资讯网——每日最新资讯28at.com

可以通过 npm config get userconfig 命令获取用户配置的 .npmrc 文件在哪里。vrK28资讯网——每日最新资讯28at.com

图片图片vrK28资讯网——每日最新资讯28at.com

可以通过 npm config set 命令设置用户级别的 .npmrc 配置。vrK28资讯网——每日最新资讯28at.com

npm config set registry https://registry.npm.taobao.org

如果想删除可以直接编辑文件,或者使用 npm config delete registry 命令来进行删除。vrK28资讯网——每日最新资讯28at.com

3.全局配置的 .npmrc

图片图片vrK28资讯网——每日最新资讯28at.com

可以通过 npm config get prefix 命令获取全局配置的 .npmrc 文件的前缀地址,vrK28资讯网——每日最新资讯28at.com

图片图片vrK28资讯网——每日最新资讯28at.com

记住是前缀地址,不是完整地址。完整地址是{$prefix}/etc/npmrc。 但是如果你从来没有全局配置过,就不会存在这个文件。 也可以通过命令行来进行全局 .npmrc 文件的配置。vrK28资讯网——每日最新资讯28at.com

npm config set registry https://registry.npm.taobao.org -g

4.npm 内置的 .npmrc

npm 内置 .npmrc 配置文件和 npm 同级,所以可以通过获取 npm 的路径,来找到 npm 内置的 .npmrc 文件。 可以通过 which npm 来获取 npm 的路径,也就找到了 npm 内置的 .npmrc 文件。vrK28资讯网——每日最新资讯28at.com

图片图片vrK28资讯网——每日最新资讯28at.com

npm install 执行之后,首先,检查并获取 npm 配置,这里的优先级为:项目级的 .npmrc 文件 > 用户级的 .npmrc 文件> 全局级的 .npmrc 文件 > npm 内置的 .npmrc 文件。vrK28资讯网——每日最新资讯28at.com

当我们在执行安装命令之后,如果命令行中不包含  save-exact,然后检查并获取 npm 配置中的 save-exact,这里的优先级为:项目级的 .npmrc 文件 > 用户级的 .npmrc 文件> 全局级的 .npmrc 文件 > npm 内置的 .npmrc 文件。vrK28资讯网——每日最新资讯28at.com

总结

使用 save-exact 可以在项目安装依赖时,保存到 package.json 的依赖项将使用精确的版本进行配置,而不是使用 npm 的默认 semver 范围运算符。在开发过程中以及使用应用程序时,可以安全地允许补丁或次要更新。vrK28资讯网——每日最新资讯28at.com

参考

https://docs.npmjs.com/cli/v10/commands/npm-install#save-exactvrK28资讯网——每日最新资讯28at.com

https://teamtreehouse.com/community/why-install-npm-packages-as-saveexactvrK28资讯网——每日最新资讯28at.com

https://stackoverflow.com/questions/58638817/what-is-the-purpose-of-using-save-exactvrK28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-16518-0.html快试试 save exact,防止你的项目依赖版本滑动

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Next.js的崛起:为什么它是现代网站的首选全栈框架

下一篇: 深入了解Python类与面向对象编程

标签:
  • 热门焦点
  • Find N3入网:最高支持16+1TB

    OPPO将于近期登场的Find N3折叠屏目前已经正式入网,型号为PHN110。本次Find N3在外观方面相比前两代有很大的变化,不再是小号的横向折叠屏,而是跟别的厂商一样采用了较为常见的
  • 6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月份有一个618,虽然这是京东周年庆的日子,但别的电商也都不约而同的跟进了,反正促销没坏处,厂商和用户都能满意。618期间一些产品也出现了历史低价,那么各个价位段的产品性价比
  • 一加首款折叠屏!一加Open渲染图出炉:罕见单手可握小尺寸

    8月5日消息,此前就有爆料称,一加首款折叠屏手机将会在第三季度上市,如今随着时间临近,新机的各种消息也开始浮出水面。据悉,这款新机将会被命名为“On
  • 掘力计划第 20 期:Flutter 混合开发的混乱之治

    在掘力计划系列活动第20场,《Flutter 开发实战详解》作者,掘金优秀作者,Github GSY 系列目负责人恋猫的小郭分享了Flutter 混合开发的混乱之治。Flutter 基于自研的 Skia 引擎
  • JavaScript学习 -AES加密算法

    引言在当今数字化时代,前端应用程序扮演着重要角色,用户的敏感数据经常在前端进行加密和解密操作。然而,这样的操作在网络传输和存储中可能会受到恶意攻击的威胁。为了确保数据
  • 三分钟白话RocketMQ系列—— 如何发送消息

    我们知道RocketMQ主要分为消息 生产、存储(消息堆积)、消费 三大块领域。那接下来,我们白话一下,RocketMQ是如何发送消息的,揭秘消息生产全过程。注意,如果白话中不小心提到相关代
  • JVM优化:实战OutOfMemoryError异常

    一、Java堆溢出堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证 GC Roots 到对象之间有可达路径来避免垃 圾收集回收机制清除这些对象,当这些对象所占空间超过
  • 超闭合精工铰链 彻底消灭缝隙 三星Galaxy Z Flip5与Galaxy Z Fold5发布

    2023年7月26日,三星电子正式发布了Galaxy Z Flip5与Galaxy Z Fold5。三星新一代折叠屏手机采用超闭合精工铰链,让折叠后的缝隙不再可见。同时,配合处
  • 北京:科技教育体验基地开始登记

      北京“科技馆之城”科技教育体验基地登记和认证工作日前启动。首批北京科技教育体验基地拟于2023年全国科普日期间挂牌,后续还将开展常态化登记。  北京科技教育体验基
Top