You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在codemagic.yaml中将package.json版本设为全局CM_ENV变量VERSION?

解决Codemagic中读取package.json版本号到CM_ENV的"bad substitution"错误

错误原因

你之前的写法误用了shell语法:${npm ...} 是变量引用的语法,shell会试图把npm当作变量名解析,而非执行npm命令,因此触发"bad substitution"错误。执行命令并捕获输出需要用命令替换语法:$(command)(推荐)或反引号`command`。

修正后的可行写法

以下几种写法都可以正确读取package.json版本号并写入$CM_ENV:

写法1:使用npm pkg get + tr去引号

scripts:
  - echo "VERSION=$(npm pkg get version --workspaces=false | tr -d '"')" >> $CM_ENV

写法2:使用node命令直接读取

scripts:
  - echo "VERSION=$(node -p "require('./package.json').version")" >> $CM_ENV

写法3:使用npm pkg get + xargs去引号

scripts:
  - echo "VERSION=$(npm pkg get version | xargs)" >> $CM_ENV

后续脚本的变量调用修正

你后续的Sentry命令中,变量写法错误:${$VERSION} 多了一个$,正确的变量引用应为${VERSION}或$VERSION:

npx @sentry/cli@latest releases -o [orgName] new -p [projectName] [projectNameString]@${VERSION}

内容的提问来源于stack exchange,提问作者Matt Anderson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 03:04:50