使用bash工具替换package.json中的整行

时间:2017-07-10 09:20:53

标签: bash sed jq

我正在使用命令行来安装nodejs项目的每个必需节点。

目前你可以这样做:

sudo gen-web-app express

这将创建开始为expressjs开发所需的一切。

我现在正在

工作
sudo gen-web-app reactjs

一切正常,除了我必须在package.json中手动进行并将启动脚本添加到文件中。 我知道这可以使用SED In BASH,但我需要一些使用sed的帮助。

这是文件:

{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "nodemon": "^1.11.0",
    "path": "^0.12.7",
    "react": "^15.6.1",
    "webpack": "^3.1.0",
    "webpack-dev-server": "^2.5.1"
  }
}

我想替换以下内容,但我会感激一点帮助:)

"test": "echo \"Error: no test specified\" && exit 1"

"start": "webpack-dev-server"

3 个答案:

答案 0 :(得分:2)

Download and install jq - 命令行JSON语法识别解析器,允许您修改.json个文件。对于你的例子。

tmp=$(mktemp)    
jq '.scripts.start = "webpack-dev-server" | del(.scripts.test)' input.json > "$tmp" && mv "$tmp" input.json

将生成最终的.json文件

{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "webpack-dev-server"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "nodemon": "^1.11.0",
    "path": "^0.12.7",
    "react": "^15.6.1",
    "webpack": "^3.1.0",
    "webpack-dev-server": "^2.5.1"
  }
}

您可以在jqplay.org开发的免费游乐场玩jq

答案 1 :(得分:1)

ListViewItem

答案 2 :(得分:0)

使用jq的另一个选项是简单地覆盖.scripts的值:

jq '.scripts = { start: "webpack-dev-server" }' file.json