问题描述
在我项目的根目录中,有一个package.json。在进行CI构建时,我试图从文件中捕获版本属性。由于我在节点容器上运行,因此可以使用以下命令。
node -p -e require('./package.json').version
我将以上内容包含在package.json的scripts属性中
"scripts": {
"version": "node -p -e require('./package.json').version"
},
我正在使用
将其捕获到变量中
export VERSION=$(npm run version)
似乎比npm命令的结果要捕获的内容更多。构建环境是基于rhel7构建的Nodejs10容器。
jq 不可用,如果没有,可能会更好
有什么建议吗?
解决方法
packege.json可以使用以下模式进行引用
$npm_package_PROP[_SUB_PROP][_SUB_SUB_PROP]
"version": "1.0.0","scripts": {
...
"version": "echo $npm_package_version"
},
npm run version # output: 1.0.0
,
-
将您的npm脚本更改为:
"scripts": { "version": "node -p \"require('./package.json').version\"" }
-e
选项不是必需的,要评估的JavaScript也必须作为字符串传递。请注意,它已用JSON转义的双引号引起来,即\"
。 -
还使用以下代码捕获并导出它:
export VERSION=$(npm run version -s)
请注意附加的
-s
选项(是--silent
的简写)-这样可以确保您仅捕获版本(例如1.0.0
),而不捕获附加的npm日志信息。