Подтвердить что ты не робот

Отредактируйте файл package.json из командной строки

Я пытаюсь добавить или отредактировать переменную в моем package.json из оболочки script. Так что если у меня есть 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 просто редактирует ~/.npmrc, а не мой package.json.

4b9b3361

Ответ 1

package.json - это просто файл json, поэтому вы можете использовать инструмент 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"
}

Ответ 2

Вы также можете использовать и sponge (пакет moreutils) следующим образом:

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

С переменной среды:

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