往NPM上发布几个库了?版本号你用对了吗?

简介: 往NPM上发布几个库了?版本号你用对了吗?

前言:


在Node横行的大前端环境里总是重复的在创造或者安装依赖npm仓库的依赖,很多朋友也发布过自己的npm包,或者因为一些依赖包有问题而进行升级,但是你真的了解package.json中版本号的意思吗?我们一起来学习一下。1.png


NPM Cli中的version:

先附上官网文档的地址:docs.npmjs.com/cli/v7/comm…


文中的第一条命令就是:

npm version [<newversion>| major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=<prerelease-id>]| from-git]


  1. 需要指定版本号的命令操作为:npm version 0.0.5
  2. 需要发布主版本的命令操作为:npm version major
  3. 需要发布次要版本的命令操作为:npm version minor
  4. 需要发布补丁版本的命令操作为:npm version patch
  5. 需要预发布的版本为加pre前缀的对应命令;


我们依次执行了指定版本号和从打补丁到主版本升级的命令操作,请看下图:

2.png


接着来看一下预发布的几条命令的执行,尤其是指定预发布前缀的命令,请看下图:

99.png


看了上面的的版本号的格式有没有找到点感觉?你是不是还在手动的修改字符串呀?顺便请看一下你的git仓库,你会发现tag都帮你打好了:

100.png


有时候你会有这样的疑问,我比较版本号做升级的时候直接用数字类型多简单,搞一个小数点就够了你这来俩?


这里推荐使用已经有的语义化版本号比较的库**semver,**依赖库的地址是www.npmjs.com/package/sem…。 这个库提供了常见的用法如下:

const semver = require('semver')
semver.valid('1.2.3') // '1.2.3'
semver.valid('a.b.c') // null
semver.clean('  =v1.2.3   ') // '1.2.3'
semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
semver.gt('1.2.3', '9.8.7') // false
semver.lt('1.2.3', '9.8.7') // true
semver.minVersion('>=1.0.0') // '1.0.0'
semver.valid(semver.coerce('v2')) // '2.0.0'
semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7'
复制代码


接着我们要看一下语义化版本号的一些东西:


  1. 版本号的组成:主版本号.次版本号.修订号;
  2. 版本号的递增规则:
  1. 不兼容API修改:主版本+1;
  2. 向下兼容功能新增:次版本号+1;
  3. 向下兼容的bug修复:修订号+1。
  1. 规范说明:
  1. 项目处于初始阶段,一切都有可能被推翻,主版本号应该为0;
  2. 当项目的公共API形成后具备了可发布的能力,版本号应为1.0.0,且后续更新基于这个版本;
  3. 当我们只是做了当前版本的问题修复,应该增加修订版本号;
  4. 当我们做了可向下兼容的新功能是或公共API被标记弃用是,应该增加次版本号且修订号归零;
  5. 当我们做了无法向下兼容的修改加入公共API时,应该增加主版本号且次版本号及修订号归零;
  6. 有时候会提前发布一些版本来提供使用,那就需要增加预发版本,标识版本并非稳定,可能存在不兼容。
  1. 当功能准备废弃掉要怎么办?
  1. 更新文件让使用者感知这个改变;
  2. 将功能弃用在适当的次版本发布;
  3. 在新的主版本中正式废弃并移除,并在一个次版本中保留被弃用的功能便于使用者迁移;

更多详细的内容XMD阅读一下文档:semver.org/lang/zh-CN/


总结就是两点:


  1. 我们在做一些对外公布使用的模块时请参照语义化版本号的规则来执行,便于使用者找到自己想要的版本;
  2. 在我们要通过版本升级来解决一些问题的时候,我们可以知道那个版本可以放心大胆用,哪些版本要注意兼容。



相关文章
|
7月前
|
前端开发 JavaScript API
聊聊 npm 的语义化版本(Semver)
聊聊 npm 的语义化版本(Semver)
154 1
|
7月前
|
JavaScript 内存技术
node与npm版本对应关系以及使用nvm管理node版本
node与npm版本对应关系以及使用nvm管理node版本
3514 0
|
4月前
|
缓存 JavaScript 前端开发
成功解决:npm 版本不支持node.js。【 npm v9.1.2 does not support Node.js v16.6.0.】
这篇文章介绍了如何解决npm版本与Node.js版本不兼容的问题,提供了查看当前npm和Node.js版本的步骤,以及如何根据Node.js版本选择合适的npm版本并进行升级的详细指导。
成功解决:npm 版本不支持node.js。【 npm v9.1.2 does not support Node.js v16.6.0.】
|
6月前
Node历史版本下载及配置npm镜像
Node历史版本下载及配置npm镜像
575 1
|
5月前
|
JavaScript 开发工具 数据安全/隐私保护
npm包【详解】(内含npm包的开发、发布、安装、更新、搜索、卸载、查看、版本号更新规则、package.json详解等)
npm包【详解】(内含npm包的开发、发布、安装、更新、搜索、卸载、查看、版本号更新规则、package.json详解等)
125 0
|
5月前
|
JavaScript 开发工具 git
使用TS+rollup打造一个npm工具库
使用TS+rollup打造一个npm工具库
200 0
|
7月前
node node-sass sass-loader版本对应问题,对于npm编译大家经常遇到这个问题
node node-sass sass-loader版本对应问题,对于npm编译大家经常遇到这个问题
785 2
|
7月前
|
内存技术
node版本与npm版本不对应的解决方案
node版本与npm版本不对应的解决方案
|
7月前
|
JavaScript
查看NodeJs版本和查看NPM版本
查看NodeJs版本和查看NPM版本
152 0
查看NodeJs版本和查看NPM版本
|
7月前
|
JavaScript 前端开发 Ruby
NPM 制作命令行工具 - 进阶辅助库
NPM 制作命令行工具 - 进阶辅助库
49 0