簡體   English   中英

使用 shell 腳本提取 package.json 版本

[英]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;

歸功於 metakermit

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM