根据当前日期的年月日生成语义化的版本号

如果今天是2022年5月2日,那么希望生成22.5.2这种版本号,并且包装成一个package.json中的script命令。

首先要生成日期的年份:

1
2
echo $(date +"%Y")
" 2022

为了截取日期年份字符串的后两位,我们用到cut命令,第一个字符的序号是1

1
2
echo $(cut -c 3-4 <<< $(date +"%Y"))
" 22

然后是获取当前日期的月份

1
2
echo $(date +"%m")
" 05

为了成为版本号,需要将前置的0去掉,这里用sed来做一个正则表达式替换:

1
2
echo $(date +"%m") | sed "s/^0*//"
" 5

最后是获取日期是第几天,当然也需要把前置0去掉:

1
2
echo $(date +"%d") | sed "s/^0*//"
" 2

组合起来,需要将"转换成\",最后的结果就是22.5.2

1
2
3
"scripts": {
"version:date": "npm version $(cut -c 3-4 <<< $(date +\"%Y\")).$(echo $(date +\"%m\") | sed \"s/^0*//\").$(echo $(date +\"%d\") | sed \"s/^0*//\")"
},

References