Можно ли использовать npm для запуска скриптов в нескольких подпапках?

У меня есть папка (проект) с тремя подпапками (клиент, сервер, активы). У каждой подпапки есть другая команда, чтобы начать и работать над проектом, который мне нужен, чтобы запустить 3 приложения. Это макет папки и команды, которые я использую для запуска каждого подпроекта:

  • Проект
    • клиент (ионная услуга)
    • сервер (node index)
    • активы (http-server -p 8082)

В настоящее время я перехожу к каждой из трех папок и запускаю каждое из приложений. Чтобы сделать процесс более стандартным, каждый подпроект имеет package.json с началом script, поэтому я просто cd subfolder && npm start.

Мой вопрос: можно использовать npm в родительской папке (т.е. написать там package.json) таким образом, чтобы я мог просто запустить следующую команду и иметь то же самое ( или аналогичный) эффект?

project > npm start

Я попытался использовать пакет parallelshell, но он не работал (возможно, из-за cd:

"scripts": {
  "start": "parallelshell 'cd app && ionic serve' 'cd api && npm start' 'cd assets && npm start'",
}

Ответ 1

Вы можете использовать "одновременно" для достижения этой цели. Поэтому вы должны создать package.json, который будет выглядеть примерно так:

...
"scripts": {
  "client": "cd client && npm start",
  "server": "cd server && npm start",
  "assets": "cd assets && ionic serve",
  "start": "concurrently \"npm run client\" \"npm run server\" \"npm run assets\" ",
},
...
"devDependencies": {
  "concurrently": "^1.0.0"
}
...

Примечание: это запустит все три процесса одновременно, что означает, что вы получите смешанный вывод всех трех (как уже упоминалось topheman)

Ответ 2

Проблема заключается в том, что все три скрипта - это запуск сервера как script, что означает, что они не похожи на задачу сборки (например) который работает в течение 10 секунд и останавливает процесс.

Для каждого из них вы запускаете их, а процесс продолжается неопределенно.

Вы можете запустить все из них с помощью демона с чем-то вроде forever, но в вашем случае вы находитесь в режиме dev (поэтому вы хотите, чтобы все журналы > и вам не нужны ошибки с сервера nodejs mixed с ионным...).

Если вы не возражаете против микширования журналов: https://www.npmjs.com/package/forever (я предполагаю, что это почти то же самое, что и parallelshell... )

Ответ 3

уже поздно отвечать, но у вас есть режим сборки --prefix Пример:

-package.json
-/dist/ssr/package.json
# package.json in root
npm run start --prefix dist/ssr