将npm命令的输入写入变量,但仅写入特定部分

问题描述

在我项目的根目录中,有一个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
,
  1. 将您的npm脚本更改为:

    "scripts": {
      "version": "node -p \"require('./package.json').version\""
    }
    

    -e选项不是必需的,要评估的JavaScript也必须作为字符串传递。请注意,它已用JSON转义的双引号引起来,即\"

  2. 还使用以下代码捕获并导出它:

    export VERSION=$(npm run version -s)
    

    请注意附加的-s选项(是--silent的简写)-这样可以确保您仅捕获版本(例如1.0.0),而不捕获附加的npm日志信息。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...