Node.js 使用shell脚本提取package.json版本

Node.js 使用shell脚本提取package.json版本,node.js,shell,unix,docker,package.json,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) })()") 这样,

我试图从build.sh文件中提取package.json中version字段的值。有办法做到这一点吗?看起来我可以使用下面的来进行提取,但是如果执行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;
VERSION='';
re=“\”(版本)\”:\”([^\“]*)\”;
当读的时候,做什么
如果[[$l=~$re]];则
value=“${BASH_重新匹配[2]}”;
VERSION=“$value”;
fi
done
如果您已经安装了,它非常简单:

jq -r .version package.json

如果我了解您的目的地,那么您正在尝试对您的工件(您的案例中的Docker映像)进行版本设置。您是否计划在每次签入时手动升级该版本(在package.json中)


相反,我建议您使用一些自动化的解决方案,比如,我不知道nodejs世界中存在任何类似的解决方案。如果这些对您没有任何意义,请让我知道,我将删除以下答案:)

所以我继续使用readJson函数,如果您真的想使用shell脚本,它完全符合我的需要试试看

sed的/*“版本”:“\(.*\)”*/\1/;t;d./package.json
归功于

NODE_VERSION=$(NODE-p-e“require('../package.json').VERSION)
echo$NODE\u版本

我不知道为什么会被否决……这正是OP所要求的。也许你应该从链接中删除相关内容:
PKG_VERSION=`node-p“require('./package.json')。VERSION`
并避免UOOC(无用的cat使用)您可以使用
jq-r.version-package.json
另一方面,使用节点本身获取版本的更简洁的方法是
version=$(node-p-e“require('../package.json').version”)
这对我很有用:
grep-version-package.json | sed's/*“version”:“\(.*\)”/\1/'