我正在尝试从build.sh文件中提取package.json中的version字段的值。有没有办法做到这一点?看起来我可以使用下面的方法来进行提取,但是如果节点不可用于全局,我执行build.sh文件,以便寻找一种通用的方法来将package.json中的值精确到build.sh文件中。
VERSION=$(node -e "(function () { console.log(require('package.json').version) })()")
答案 0 :(得分:2)
如果你安装了jq,那真的很容易:
cat package.json | jq .version
答案 1 :(得分:2)
答案 2 :(得分:1)
这样你就可以从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;
答案 3 :(得分:1)
归功于metakermit
NODE_VERSION=$(node -p -e "require('./package.json').version")
echo $NODE_VERSION
答案 4 :(得分:0)
如果我了解您要去的地方,那么您正试图对您的工件进行版本化(在您的案例中为Docker镜像)。您是否计划每次签入时手动压缩版本(在package.json中)?
相反,我建议你使用像http://facebook.github.io/react-native/releases/0.45/docs/running-on-device.html#running-your-app-on-ios-devices这样的自动化解决方案,我不知道nodejs世界中存在类似的东西。如果这对你没有任何意义,请告诉我,我会删除这个答案:)
答案 5 :(得分:0)
如果您真的想使用shell脚本,只需尝试一下
sed 's/.*"version": "\(.*\)".*/\1/;t;d' ./package.json