使用bash工具替换package.json中的整行
我正在使用一个命令行来安装nodejs项目所需的每个节点 目前,您可以执行以下操作:使用bash工具替换package.json中的整行,bash,sed,jq,Bash,Sed,Jq,我正在使用一个命令行来安装nodejs项目所需的每个节点 目前,您可以执行以下操作: sudo gen-web-app express 这将生成开始为expressjs开发所需的所有内容 我现在正在工作 sudo gen-web-app reactjs 一切正常,除了我必须手动进入package.json并将启动脚本添加到文件中。 我知道在BASH中使用SED是可能的,但是我需要一些使用SED的帮助 这是文件: { "name": "test", "version": "1.0.0"
sudo gen-web-app express
这将生成开始为expressjs开发所需的所有内容
我现在正在工作
sudo gen-web-app reactjs
一切正常,除了我必须手动进入package.json并将启动脚本添加到文件中。
我知道在BASH中使用SED是可能的,但是我需要一些使用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"
}
}
我想替换以下内容,但我希望得到一些帮助:)
与
-一个命令行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"
}
}
您可以在由开发的免费游乐场中玩
jq
。使用jq
的另一个选项是简单地覆盖的值。脚本
:
jq '.scripts = { start: "webpack-dev-server" }' file.json
这是使用
sed
可以完成的最基本任务。想看看它的文档还是快速教程?此外,如果可能,您应该避免使用sed
,并使用能够理解JSON
格式的工具,例如jq
。不要使用像sed
这样的非JSON语法感知解析器,使用jq
,这是用于JSON解析的。你能下载并安装jq
?谢谢你的回答,我们将研究jq:)!
{
"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"
}
}
$ sed -ie 's/\"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"/\"start\": \"webpack-dev-server\"/g' file
$ cat file
{
"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"
}
}
jq '.scripts = { start: "webpack-dev-server" }' file.json