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

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

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

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

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

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

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

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

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

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

save-exact

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

使用

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

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

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

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

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

yarn add react --save-exact

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

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

npm config set save-exact true

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

配置优先级

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

1.项目中的 .npmrc

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

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

save-exact=true

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

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

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

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

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

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

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

3.全局配置的 .npmrc

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

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

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

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

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

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

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

总结

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

参考

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

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

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

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

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

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

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

标签:
  • 热门焦点
Top