
刚接触程式设计的时候欢天喜地的帮自己刚写好的程式命名了第一个版本号v12.0
,后来才发现自己多傻,竟然没有好好了解怎么打版号,直到现在又发现自己多傻,竟然不会用npm version
自动打版号…
先介绍一下JS圈主流的版本命名方式
语意化版本2.0.0
Semantic Versioning spec and website
semver.org
通常我们定义版本会用3个数字来定义1.23.456
像是这样3个数字,最前面的1
代表主版号,23
代表次版号,456
代表修订号。
假设你今天写好了一个稳定的工具集,里面有一些模组可以给别人使用,我们会定义初始版本号为1.0.0
作为一个美丽的开始。
当你又多写了一个模组加入这个工具集,功能上的提升,不会影响到原本的使用方式,我们就可以增加次版号变成1.1.0
。
当使用者回报你有功能故障,你修正了之后,我们会增加修订号变成1.1.1
。
如果今天你有把一些功能砍掉或是改版,原本的使用方式改变了,那就要往前进一个主版号了也就是变成2.0.0
。
怎么用npm version 自动打版号?
一开始用npm init
指令建立package.json
之后会纪录如下,当然别忘记使用git init
将专案资料夹列入版控。
{
"name": "npm_version_tut",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error : no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
随着专案的推进,我们可能写了一些模组

我们想要进次版号了,就可以透过npm 的指令输入
npm version minor
这时后npm 就会自动帮我们的package.json 版本提升次版号,并且帮我们的git 打tag

我们可能会修正bug 就会输入
npm version patch

如果要提升主版号就可以输入
npm version major

总结
使用npm version 打版号很方便,除了我讲的3个参数指令之外npm version 还有其他的参数可以下。版本命名这个议题除了我贴的语意式命名之外还有很多种方式,像是我有遇过公司用日期来当作版本号的。