依赖包的版本号匹配策略&&版本号管理策略&&使用npm管理项目版本号

依赖包的版本号匹配策略

  • ~会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0
  • ^会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0
  • 没有~^,完全匹配指定版本号

设置默认版本号匹配规则npm config set save-prefix ["^"|"~"|""]

可以在项目package.json同级目录下创建.npmrc文件,来指定项目的版本号匹配规则save-prefix=""

使用命令管理自己的版本号

在现代大前端的项目中,版本号管理使用的是npm的命令——别跟我说,你是手动改package.json来更新版本号的。

在命令行敲入npm version --help就可以看到可以使用的命令:

npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git]
  • major:主版本号

  • minor:次版本号

  • patch:补丁号

  • premajor:预备主版本

  • prepatch:预备次版本

  • prerelease:预发布版本

我的package.json当前version6.0.0,依次输入下面的命令,package.jsonversion会变更为提升后的版本号。

C:\Users\Administrator\Desktop\work\stage-view (master) (stage-view@6.0.0)
λ npm version preminor
v6.1.0-0
C:\Users\Administrator\Desktop\work\stage-view (master) (stage-view@6.1.0-0)
λ npm version minor
v6.1.0
C:\Users\Administrator\Desktop\work\stage-view (master) (stage-view@6.1.0)
λ npm version prepatch
v6.1.1-0
C:\Users\Administrator\Desktop\work\stage-view (master) (stage-view@6.1.1-0)
λ npm version patch
v6.1.1
C:\Users\Administrator\Desktop\work\stage-view (master) (stage-view@6.1.1)
λ npm version prerelease
v6.1.2-0
C:\Users\Administrator\Desktop\work\stage-view (master) (stage-view@6.1.2-0)
λ npm version premajor
v7.0.0-0
C:\Users\Administrator\Desktop\work\stage-view (master) (stage-view@7.0.0-0)
λ npm version major
v7.0.0

如上所示,敲入npm version preminor,项目的version就从6.0.0变成了6.1.0-0。

对了,项目的git status必须是clear,才能使用上述命令。

如果你的项目中包含git,它还会自动给你提交更新到git,git commit -m "X.Y.Z",所以还可以在npm version NEWVERSION 后面加上-m参数来指定自定义的commit message。比如:

npm version patch -m "Upgrade to %s for reasons"

message中的s%将会被替换为版本号。

版本号策略

版本号格式:主版本号**.次版本号.**修订号;

主版本号:当你做了不兼容的 API 修改;

次版本号:当你做了向后兼容的功能性新增;

修订号:当你做了向后兼容的问题修正;

处于开发阶段的项目版本号以0.Y.Z形式表示,此阶段正在开发基础功能、公众API;

版本号只能增加,禁止下降,代码的修改必须以新版本形式更新;

如何判断发布 1.0.0 版本的时机? 当你的软件被用于正式环境,它应该已经达到了 1.0.0 版。如果你已经有个稳定的 API 被使用者依赖,也会是 1.0.0 版。如果你很担心向下兼容的问题,也应该算是 1.0.0 版了。

万一不小心把一个不兼容的改版当成了次版本号发行了该怎么办?一旦发现自己破坏了语义化版本控制的规范,就要修正这个问题,并发行一个新的次版本号来更正这个问题并且恢复向下兼容。即使是这种情况,也不能去修改已发行的版本。

编程式

在项目代码中有时候需要判断当前版本,可以通过读取package文件获取当前版本:

import {version} from './package.json'

要判断两个版本号字符串的大小,可以使用插件 compare-versions :

compareVersions('10.1.8', '10.0.4'); // 1
compareVersions('10.0.1', '10.0.1'); // 0

自动更新版本号

在项目目录的.git/hooks/目录中新建文件: post-commit——是的,没有后缀名。
然后粘贴以下代码并保存文件:

#!/bin/sh
COMMIT_MSG="$(git log --pretty=format:"%s" -1 head)"
echo "$COMMIT_MSG" | grep  -q  "^[0-9]"
if [ $? -ne 0 ];then
  echo $(npm version patch)
fi

上面代码会在每次git commit 执行后被运行,它检查commit的message是不是版本号,如果不是,它就会执行npm version patch更新版本号。

原文地址

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值