本文介绍: 首次发布自己依赖npm上,新增优化一些功能后想更新使用者,但是遇到更新失效?在开发遇到要更新依赖时候,用npm update却怎么都安装不上?这篇文章或许能帮助你完成上传更新和下载更新。

发布和更新package封面

一、关于发布和更新package

遇到问题npm version patch没有更新版本

首次在npm发布一个简单的包,发布成功后,又新增一个 readme.md 文件项目描述清晰,执行更新命令 npm version patch输出版本号,但是查看npm网站执行 npm view versions 查看没有更新版本,究竟是什么情况呢?

# 第一次发布
$ npm publish
# 输出
...
npm notice Publishing to https://registry.npmjs.org/
+ create-captcha@0.0.1

# 新增 readme.md 文件
$ npm version patch
# 输出
v0.0.2

# 这时查看版本列表
$ npm view create-captcha versions
# 输出 只有一个版本
0.0.1

执行 npm version patch的情况下,线上没有更新成功。

如何处理让更新生效

npm官网继续查看文档发现执行version 更新操作后,也需要执行 npm publish 才会发布版本npm version patch/minor/major 三个命令执行后,都需要执行 npm publish 进行发布。

# 微小版本更新,对应版本号v0.0.1 就是 v<major>.<minor>.<patch>, v微小更新.次要更新.主要更新
$ npm version patch
$ npm publish

$ npm version minor
$ npm publish

$ npm version major
$ npm publish

查看更新发布结果

查看结果有2中方法,一是打开 npmjs.com 搜索自己的包,点进去查看版本号,另一个就是通过终端命令行方式查看。

# 列出所有线上版本
$ npm view create-captcha versions
# 输出
[ '0.0.1', '0.0.2' ]

# 仅列出线上最新版
$ npm view create-captcha version
# 输出
0.0.2

二、关于开发项目更新依赖 npm update

当发布了包的更新版本后,在依赖包的项目中使用 npm update 进行更新,却发现没有更新成功。于是再查看 npm 文档得出缘由。

项目依赖版本标识不同含义

我们项目的 package.json中,标识依赖版本的字段有3种表示方法分别对应不同的更新规则
无论是在 dependencies 还是devDependencies 字段中,^ 代表大版本一致,~ 表示次要版

"dependencies": {
	"pkg1": "^1.2.3",  // 安装大版本为1的latest最新版
	"pkg2": "~1.2.3", // >=1.2.3 <1.3.0,次要版本不能高,只更新补丁小版本
	"pkg3": "1.2.3",  // 具体版本
	"pkg4": "^0.1.2"  // 大版本低于1.0.0
	"pkg5": "^0.0.1", // 大版本低于1.0.0
	}

pkg1 使用 ^ 进行标识可以安装大版本一致的最新版本 (>=1.2.3 <2.0.0);
pkg2 使用 ~ 进行标识可以安装次要版本一致的最高版本 (>=1.2.3 <1.3.0);
pkg3 没有标识符号,只能安装具体固定版本 1.2.3;

特别地,当大版本低于 1.0.0时,^的作用就不是限定大版本了
pkg4 使用 ^ 进行标识,;
pkg5 使用 ^ 进行标识,这种情况只能先提高package.json版本号才能进行更新。

以React版本为例

我们使用 npm view react versions 查看 react的所有版本

react 版本删减作为示例
[
‘0.0.1’, ‘0.0.2’, ‘0.0.3’,
‘0.1.2’,
‘0.2.0’, ‘0.2.1’, ‘0.2.6’,
‘0.3.0’, ‘0.3.4’,
‘0.14.0’, ‘0.14.1’, ‘0.14.10’,
‘15.0.0’, ‘15.0.1’,
‘18.2.0’
]

新建一个目录初始化项目,然后安装低版本 react

$ mkdir test-react
$ cd test-react
$ npm init -y
$ npm i react@0.0.1 -S

我们在 package.json 中得到依赖版本号

"dependencies": {
    "react": "^0.0.1"
}

然后尝试进行更新

$ npm update react -S
# 输出 up to date, audited 2 packages in 34s

update命令package.json中低于1.0.0版本的react进行更新,提示已经是最新版接下来package.json中版本改为0.0.2,再执行一次更新命令

// package.json
"react": "^0.0.2"

// shell
$ npm update react -S
# 输出 changed 1 package, and audited 2 packages in 8s

react更新成功变为来0.0.2,由此可见低于1.0.0版本时,^符号标识的版本只能限定在它标识的小版本内。

再次改动package.json,把react 改成次要版本为2,即 "react": "^0.2.0",执行更新

$ npm update react -S
# 输出 added 3 packages, changed 1 package, and audited 5 packages in 11s
# 此时 node_modules目录有 ensure-array eventemitter2 react sprintf 四个目录

此时查看package.json 依赖已变为 “react”: “^0.2.6”, 更新到了次要版本为2的最新版本,下一个版本就是0.3.0。再贴一次版本号列表进行查看,到此我们知道了低于1.0.0时 ^符号是怎么一个规则作用
[
‘0.0.1’, ‘0.0.2’, ‘0.0.3’,
‘0.1.2’,
‘0.2.0’, ‘0.2.1’, ‘0.2.6’,
‘0.3.0’, ‘0.3.4’,
‘0.14.0’, ‘0.14.1’, ‘0.14.10’,
‘15.0.0’, ‘15.0.1’,
‘18.2.0’
]

另一个方法通过重新安装新版本来进行更新 npm i xxx@latest -S

回归到我自己发布的包上面,重新执行安装命令可以把依赖更新到最新版本,react当然也一样啦,快试试吧。

$ npm install create-captcha@latest -S
# 输出
changed 1 package, and audited 2 packages in 4s

如何正确使用版本标识?

  1. 当我们开启一个新项目时,安装使用最新的依赖包一般是一个不错的选择,毕竟旧版本慢慢会失去维护。

  2. 但是当我们是在已有项目中开发,那我们就需要保证依赖的版本能兼容项目,并且最好与生产服务器部署的版本高度一致,从而避免生产和开发环境不一致导致排查问题时非常困难。

查看版本更新结果

使用 npm list 可以查看当前项目中安装的所有依赖版本。

$ npm list

无论是开发发布包,还是在项目中使用依赖,我们都需要对版本有一个清晰的了解,做好一步可以避免后面开发过程出现环境相关问题提高开发效率和幸福感!

原文地址:https://blog.csdn.net/zhouweihua138/article/details/129523382

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_33708.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注