Запустите сервер узла в фоновом режиме и запустите карму из скрипта npm - PullRequest
0 голосов
/ 02 октября 2018

Я бы хотел запустить сервер узлов в фоновом режиме и запустить карму (на win7).Написание сценария bash, подобного следующему (и запуск его с помощью git bash), похоже, работает, но вместо терминала WebStorm он сообщает в отдельное окно:

#!/bin/bash

node test/server/index.js &
karma start karma.conf.js

package.json

  "scripts": {
    "test": "test.sh"
  },

Если я попытаюсь сделать это с помощью git bash и bash test.sh, то он сообщит в то же окно.

Я попытался сделать что-то подобное в npm, но он не может запустить фоновые процессы.

  "scripts": {
    "test": "node test/server/index.js & karma start karma.conf.js"
  },

Независимо от того, как я стараюсь, он может запускать вещи только в одном процессе, поэтому он ожидает выхода сервера узлов, и, следовательно, сервер кармы никогда не запускается.

Любая идея, как решить создание отчетов bashк терминалу WebStorm или к распараллеливанию npm?

обновление:

Мне кажется, я нашел причину: https://github.com/npm/npm/issues/8358 Эта проблема, похоже, связана с Windows,В Linux это будет работать правильно.Поэтому невозможно исправить скрипт npm.Я думаю, что вместо bash я перенесу сервер кармы и сервер узлов в скрипт узла и создаю дочерний процесс, чтобы сервер узла был совместим с Windows.Я надеюсь, что таким образом логи кармы будут отображаться в терминале WebStorm.

1 Ответ

0 голосов
/ 08 октября 2018

Кроссплатформенное решение для распараллеливания оболочки

У меня было немного времени, чтобы поискать больше в теме.На самом деле существуют инструменты распараллеливания для сценариев npm и shell, которые являются кроссплатформенными:

Была инициатива объединить все эти проекты с другими, которая была более или менее успешной: https://github.com/mysticatea/npm-run-all/issues/10. По словам одного из участников npm-run-теперь все отлично, с другой стороны, репозиторий npm-run-all в настоящее время не кажется таким активным, поэтому, вероятно, лучше использовать одновременно или shell-executor.

настройки WebStorm / Git bashрешение

Я установил для терминала WebStorm git bash вместо cmd.exe:

File/Settings > Tools/Terminal > Shell path: "C:\Program Files\Git\bin\bash.exe" > Ok

И я изменил скрипт npm для запуска с bash:

  "scripts": {
    "test": "bash -c \"node test/server/index.js & karma start karma.conf.js\""
  },

Надеюсь, команды bash работают одинаково и в Linux, я должен проверить с Трэвисом, но есть очень хороший шанс.

Использование команды bash для файла sh также работает:

  "scripts": {
    "test": "bash test.sh"
  },

Является ли конфигурация оболочки npm возможным решением?

Интересно, что без использования команды bashверхнее решение не сработало.Вероятно, npm запустил его с cmd.exe, и он открыл bash.exe в новом окне, когда проверил заголовок и понял, что это скрипт bash.И да, я проверил, и он использует cmd.exe по умолчанию:

$ npm config ls -l | grep shell
shell = "C:\\Windows\\system32\\cmd.exe"

Так что другим вариантом может быть установка оболочки npm на git bash, и после этого мне не нужно использовать bash в моих сценариях.

npm config set shell "C:\Program Files\Git\bin\bash.exe"

Ну, я сделал именно это, но ничего не изменилось.Мне все еще нужно использовать bash в моих скриптах, и файл sh по-прежнему открывается в новом окне.Это не имеет большого значения, нам все еще нужны настройки Webstorm для запуска скрипта с bash, поэтому это не решение .

...