如何在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
相关产品推荐
相关产品推荐

