一、关于发布和更新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’
]
$ mkdir test-react
$ cd test-react
$ npm init -y
$ npm i react@0.0.1 -S
"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
如何正确使用版本标识?
查看版本更新结果
使用 npm list 可以查看当前项目中安装的所有依赖版本。
$ npm list
无论是开发发布包,还是在项目中使用依赖,我们都需要对版本有一个清晰的了解,做好这一步可以避免后面开发过程出现环境相关的问题,提高开发效率和幸福感!
原文地址:https://blog.csdn.net/zhouweihua138/article/details/129523382
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_33708.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!