web-dev-qa-db-ja.com

コマンドラインからpackage.jsonを編集します

Package.jsonの変数をシェルスクリプトから追加または編集しようとしています。だから私はこのようなpackage.jsonがある場合:

{
  "name": "my-project",
  "description": "Project by @DerZyklop",
  "version": "0.0.0",
  ...

のようなコマンドが欲しい

npm config set foo bar

次のような新しいフィールドを追加します

{
  "name": "my-project",
  "description": "Project by @DerZyklop",
  "foo": "bar",
  "version": "0.0.0",
  ...

...しかし、残念ながらnpm config setは、package.jsonではなく、~/.npmrcを編集するだけです。

40
DerZyklop

package.jsonjsonファイルであるため、ツール json を使用できます。それをインストールするには、次を使用します。

npm install -g json

その後、ファイルをその場で編集できます。詳細情報 こちら

$ cat package.json
{
  "name": "my-project",
  "description": "Project by @DerZyklop",
  "version": "0.0.0"
}

$ json -I -f package.json -e 'this.foo="bar"'
json: updated "package.json" in-place

$ cat package.json
{
  "name": "my-project",
  "description": "Project by @DerZyklop",
  "version": "0.0.0",
  "foo": "bar"
}
68
enrico.bacis

次のように jq および sponge (moreutilsパッケージ)を使用することもできます。

jq '.foo="bar"' package.json | sponge package.json

環境変数を使用する場合:

jq --arg h "$HOMEPAGE" '.homepage=$h' package.json | sponge package.json
0
Bertrand Martel