使用shell脚本

时间:2017-06-29 19:13:36

标签: node.js shell unix docker package.json

我正在尝试从build.sh文件中提取package.json中的version字段的值。有没有办法做到这一点?看起来我可以使用下面的方法来进行提取,但是如果节点不可用于全局,我执行build.sh文件,以便寻找一种通用的方法来将package.json中的值精确到build.sh文件中。

VERSION=$(node -e "(function () { console.log(require('package.json').version) })()")

6 个答案:

答案 0 :(得分:2)

如果你安装了jq,那真的很容易:

cat package.json | jq .version

答案 1 :(得分:2)

所以我继续使用来自enter image description here的readJson函数,这完全符合我的需要

答案 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