[英]shell script for automating package.json file version increment
[英]Extract package.json version using shell script
我试图从 build.sh 文件中提取 package.json 中版本字段的值。 有没有办法做到这一点? 看起来我可以使用下面的方法进行提取,但是如果我执行 build.sh 文件的节点在全局不可用怎么办,所以寻找一种通用方法来将 package.json 中的值精确到 build.sh 文件中。
VERSION=$(node -e "(function () { console.log(require('./package.json').version) })()")
如果你安装了jq ,那真的很简单:
jq -r .version package.json
所以我继续使用http://dailyraisin.com/read-json-value-in-bash/ 中的 readJson 函数,它完全符合我的需要
如果您真的想使用shell脚本,那么只需尝试一下
sed 's/.*"version": "\(.*\)".*/\1/;t;d' ./package.json
这样您就可以使用bash
从 package.json 文件中获取版本
VERSION='';
re="\"(version)\": \"([^\"]*)\"";
while read -r l; do
if [[ $l =~ $re ]]; then
value="${BASH_REMATCH[2]}";
VERSION="$value";
fi
done < package.json;
echo $VERSION;
NODE_VERSION=$(node -p -e "require('./package.json').version")
echo $NODE_VERSION
如果我了解您要去哪里,那么您正在尝试对您的工件(在您的情况下为 Docker 映像)进行版本控制。 您是否打算在每次签入时手动修改版本(在 package.json 中)?
相反,我建议您使用一些自动化解决方案,例如Nebula Release Plugin (In Java World) ,我不知道 nodejs 世界中存在任何类似的东西。 如果这些对您没有任何意义,请告诉我,我将删除此答案:)
使用 awk 的简单解决方案(默认安装 linux 和 mac)。
awk -F'"' '/"version": ".+"/{ print $4; exit; }' package.json
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.