2017-07-10 10 views
0

nodejsプロジェクトに必要なすべてのノードをインストールするコマンドラインで作業しています。 bashツールを使用してpackage.jsonの行全体を置き換えます。

現在あなたが行うことができます。

sudo gen-web-app express 

、これはあなたがexpressjsのために開発を開始するために必要なすべてをgenereateます。

私はすべてが私はpackage.jsonに手動で移動して、ファイルに起動スクリプトを追加する必要が除いて取り組んでいる。

sudo gen-web-app reactjs 

に今働いています 私はこれがSEDを使って可能であることを知っています。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" 
    } 
} 

私は次のように置き換えたいが、私は

"start": "webpack-dev-server" 
+1

これは、あなたがsed' 'を使用して実行できる最も基本的なタスクです。ドキュメントやクイックチュートリアルを確認してください。また、可能であれば、 'sed'を避け、' jp'のような 'JSON'フォーマットを理解できるツールを使用するべきです。 – Aaron

+1

'sed'のような非JSON構文認識パーサーを使用しないでください。JSON解析のための' jq'を使用してください。 'jq'をダウンロードしてインストールできますか? – Inian

答えて

1

Download and install jqで少し助け:)

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

をいただければ幸いです - コマンドラインJSONを変更できる構文認識パーサー210ファイル。あなたの問題の例のために。

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

はあなたがjqplay.orgで開発されたフリー遊び場に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" 
    } 
} 

として最終.jsonファイルを生成します。

+1

答えをありがとう、JQに見える:)! –

+1

作品!ありがとう、あなたの答えを受け入れました。 –

0
$ 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" 
    } 
} 
+0

有効な回答のようですね、ありがとうございます。 –

0

単に.scriptsの値を上書きすることですjqを使用して別のオプション:

jq '.scripts = { start: "webpack-dev-server" }' file.json 
関連する問題