![](/img/trans.png)
[英]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.