替换 package.json 文件中的第一次出现

Replace first occurrence in package.json file

很难仅替换我的 package.json 文件中出现的 version 属性 值

我试过的

CURRENT_VERSION=$(node -p "require('./package.json').version")
sed  -i '0,/$CURRENT_VERSION/{s//1.0.2/}' package.json

-- file doesn't change --

我的package.json文件

{
  "version": "1.0.0",
  "dependencies": {
    "demo-dep": "1.0.0"
  }
}

sed 解析 json 文件太容易出错,尽量避免这种情况并使用专门的工具来完成这项工作。

npm本身可以用来设置版本hassle-free,见https://docs.npmjs.com/cli/v8/commands/npm-version

在你的情况下 运行 npm version 1.0.2 应该有效

如果您仍想使用 sed - 这样的方法应该可行

sed -i "0,/$CURRENT_VERSION/ s/$CURRENT_VERSION/1.0.2/"

但是如果 npm 不是一个选项 - 我建议你使用 jq

tmp=$(mktemp); jq '.version = "1.0.2"' package.json > "$tmp" && mv "$tmp" package.json

肯定会少error-prone