Добавляение команды запуска json-server в package.json для старта через Yarn или NPM. Параллельный, одновременный запуск

Исходные данные

В package.json команда start в которой хотелось бы запустить json-server выглядит так:

  "scripts": {
    "start": "node scripts/start.js"
    "build": "node scripts/build.js",
    "test": "node scripts/test.js"
  },

При этом json-server приходилось запускать в отдельной вкладке командой:

json-server json/goods.json --port 3004

Решение

Для параллельного запуска команд устанавливаем специальный пакет concurrently:

npm i  concurrently

или в случае использования ярна:

yarn add concurrently

и переписываем определение команды start на:

  "scripts": {
    "start": "concurrently \"json-server json/goods.json --port 3004\" \"node scripts/start.js\"".
    "build": "node scripts/build.js",
    "test": "node scripts/test.js"
  },

(т.е. сначала запускаем json-server, а потом основную сборку).

Источник идеи: https://stackoverflow.com/a/62705843

Отдельный запуск. Минусы параллельного решения

Решение удобно для демонстрации, но неудобного для разработки, т.к. выводится много информации и окно не отчищается от уже исправленных ошибок и замечаний сборщика, в итоге там оказывается слишком много сообщений, поэтому для запуска всего и сразу использовать отдельную команду, а в процессе разработки все-таки применять разные команды в разных вкладках (или окнах) терминала.

Тогда секция scripts файла packacage.json может выглядеть как-то так:

  "scripts": {
    "start": "node scripts/start.js",
    "server": "json-server json/goods.json --port 3004",
    "demo": "concurrently \"json-server json/goods.json --port 3004\" \"node scripts/start.js\"",
    "build": "node scripts/build.js",
    "test": "node scripts/test.js"
  },

-- в данном случае все и сразу можно запустить через

yarn demo

или

npm run demo