使用 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) })()")
通过这种方式,您可以使用 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;
如果您安装了 jq,那真的很简单:
jq -r .version package.json
如果我知道你要去哪里,你正在尝试对你的工件进行版本控制(Docker 图片在你的情况下)。您是否打算在每次签入时手动更新版本(在 package.json 中)?
相反,我建议您使用一些自动化解决方案,例如 Nebula Release Plugin (In Java World),我不知道 nodejs 世界中是否存在任何类似的解决方案。如果 none 对您有任何意义,请告诉我,我将删除此答案:)
所以我继续使用 http://dailyraisin.com/read-json-value-in-bash/ 中的 readJson 函数,它完全符合我在这里的需要
如果你真的想使用 shell 脚本,那么就试试吧
sed 's/.*"version": "\(.*\)".*//;t;d' ./package.json
归功于 metakermit
NODE_VERSION=$(node -p -e "require('./package.json').version")
echo $NODE_VERSION
我正在尝试从 build.sh 文件中提取 package.json 中版本字段的值。有没有办法做到这一点?看起来我可以使用下面的方法进行提取,但是如果节点在我执行 build.sh 文件时全局不可用怎么办,所以寻找一种通用方法来将 package.json 中的值精确到 build.sh 文件.
VERSION=$(node -e "(function () { console.log(require('./package.json').version) })()")
通过这种方式,您可以使用 bash
VERSION='';
re="\"(version)\": \"([^\"]*)\"";
while read -r l; do
if [[ $l =~ $re ]]; then
value="${BASH_REMATCH[2]}";
VERSION="$value";
fi
done < package.json;
echo $VERSION;
如果您安装了 jq,那真的很简单:
jq -r .version package.json
如果我知道你要去哪里,你正在尝试对你的工件进行版本控制(Docker 图片在你的情况下)。您是否打算在每次签入时手动更新版本(在 package.json 中)?
相反,我建议您使用一些自动化解决方案,例如 Nebula Release Plugin (In Java World),我不知道 nodejs 世界中是否存在任何类似的解决方案。如果 none 对您有任何意义,请告诉我,我将删除此答案:)
所以我继续使用 http://dailyraisin.com/read-json-value-in-bash/ 中的 readJson 函数,它完全符合我在这里的需要
如果你真的想使用 shell 脚本,那么就试试吧
sed 's/.*"version": "\(.*\)".*//;t;d' ./package.json
归功于 metakermit
NODE_VERSION=$(node -p -e "require('./package.json').version")
echo $NODE_VERSION