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

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

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

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

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

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

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

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

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

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

save-exact

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

使用

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

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

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

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

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

yarn add react --save-exact

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

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

npm config set save-exact true

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

配置优先级

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

1.项目中的 .npmrc

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

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

save-exact=true

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

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

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

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

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

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

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

3.全局配置的 .npmrc

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

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

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

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

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

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

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

总结

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

参考

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 官方承诺:K60至尊版将会首批升级MIUI 15

    全新的MIUI 15今天也有了消息,在官宣了K60至尊版将会搭载天玑9200+处理器和独显芯片X7的同时,Redmi给出了官方承诺,K60至尊重大更新首批升级,会首批推送MIUI 15。也就是说虽然
  • 6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月份有一个618,虽然这是京东周年庆的日子,但别的电商也都不约而同的跟进了,反正促销没坏处,厂商和用户都能满意。618期间一些产品也出现了历史低价,那么各个价位段的产品性价比
  • 一篇文章带你了解 CSS 属性选择器

    属性选择器对带有指定属性的 HTML 元素设置样式。可以为拥有指定属性的 HTML 元素设置样式,而不仅限于 class 和 id 属性。一、了解属性选择器CSS属性选择器提供了一种简单而
  • 这款新兴工具平台,让你的电脑效率翻倍

    随着信息技术的发展,我们获取信息的渠道越来越多,但是处理信息的效率却成为一个瓶颈。于是各种工具应运而生,都在争相解决我们的工作效率问题。今天我要给大家介绍一款效率
  • 零售大模型“干中学”,攀爬数字化珠峰

    文/侯煜编辑/cc来源/华尔街科技眼对于绝大多数登山爱好者而言,攀爬珠穆朗玛峰可谓终极目标。攀登珠峰的商业路线有两条,一是尼泊尔境内的南坡路线,一是中国境内的北坡路线。相
  • 年轻人的“职场羞耻感”,无处不在

    作者:冯晓亭 陶 淘 李 欣 张 琳 马舒叶来源:燃次元“人在职场,应该选择什么样的着装?”近日,在网络上,一个与着装相关的帖子引发关注,在该帖子里,一位在高级写字楼亚洲金
  • iQOO Neo8 Pro评测:旗舰双芯加持 最强性能游戏旗舰

    【Techweb评测】去年10月,iQOO推出了一款Neo7手机,该机搭载了联发科天玑9000+,配备独显芯片Pro+,带来了同价位段最佳的游戏体验,一经上市便受到了诸多用
  • OPPO K11搭载长寿版100W超级闪充:26分钟充满100%

    据此前官方宣布,OPPO将于7月25日也就是今天下午14:30举办新品发布会,届时全新的OPPO K11将正式与大家见面,将主打旗舰影像,和同档位竞品相比,其最大的卖
  • 朋友圈可以修改可见范围了 苹果用户可率先体验

    近日,iOS用户迎来微信8.0.27正式版更新,除了可更换二维码背景外,还新增了多项实用功能。在新版微信中,朋友圈终于可以修改可见范围,简单来说就是已发布的朋友圈
Top