Автоматически компилировать источники TypeScript и копировать статические (шаблонные) файлы - PullRequest
0 голосов
/ 25 февраля 2019

При отладке экспресс-сервера мой процесс «сборки и запуска» состоит из 3 шагов:

  • Компиляция источников TypeScript с использованием tsc
  • Копирование статических файлов, таких как изображения и шаблоны, вdist/
  • Запустите скомпилированный server.js файл

Каждый из этих шагов можно автоматизировать с помощью режима просмотра , но я изо всех сил пытаюсь объединитьтри вместе.Мне удалось заставить его работать, используя tsc-watch для просмотра источников TypeScript, cpx для копирования статических файлов и, наконец, nodemon для перезапуска сервера.Этот подход работает , но есть несколько проблем:

  • cpx просматривает только файлы, которые существовали на момент его запуска (я думаю, tsc-watch делает это тоже иногда , это немного странно)
  • Этот подход требует 3 команды в 3 отдельных терминалах, что просто неудобно
  • Оба cpx & tsc-watch не обрабатываются Ctrl+C правильно завершить работу, вызывая всевозможные проблемы

I найдено некоторые другие вопросы , которые относятсяна эту тему, но никто из них не решает вышеупомянутые проблемы (хотя они и рассказали мне о cpx & tsc-watch).Я не хочу использовать одновременно , потому что это может вызвать проблемы с синхронизацией и смешивать вывод консоли из разных процессов (особенно tsc-watch и реального сервера).

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

Есть ли какие-либо решения для этого, которые я могу иметьпропущенный?Должен ли я просто написать скрипт, который автоматически открывает 3 необходимых терминала?

1 Ответ

0 голосов
/ 07 марта 2019

В итоге я выбрал webpack с copy-webpack-plugin .

Хотя, к сожалению, режим просмотра сломан наНа момент написания статьи мне кажется, что она полностью соответствует моим потребностям почти :

  • При таком подходе требуется всего 2 терминала (один для webpack, другой для nodemon).Это не идеально, но это намного лучше, чем 3.
  • Новые файлы должны быть подобраны автоматически (хотя в настоящее время не работают на 100% правильно)
  • Изменение статическогофайлы не должны вызывать полную перекомпиляцию, которая может привести к перезапуску сервера (опять же, в настоящее время это не работает на 100% правильно)
  • Webpack обрабатывает Ctrl+C изящно завершает работу
  • И самая важная причина для меня: copy-webpack-plugin позволяет мне более подробно указать, как я хочу, чтобы мои файлы копировались, с опцией context
...