Как я могу проанализировать TypeScript / TSLint для медленных узких мест обработки в моем проекте React? - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть проект React (созданный с помощью Create-React-App с использованием шаблона TypeScript), который содержит около 300 файлов (примерно 24 000 строк кода). Мы также добавили небольшое количество дополнительных проектных зависимостей, в том числе Redux, React- Bootstrap и AWS Amplify.

Проверка типов и linting в VSCode (с использованием плагина TSLint) раньше использовались очень быстрый. Но после нескольких месяцев разработки, отзывчивость литинга и обратной связи в VSCode стала все медленнее sh до такой степени, что ошибки типов и другие языковые службы могут корректно отображаться в редакторе после 30 секунд или более после внесение изменений в один файл.

Теперь я ожидал бы некоторой медлительности, если бы у меня был большой проект с несколькими тысячами файлов, но только с 300 файлами, я не понимаю, почему обработка такая медленная.

(я ожидаю, что TSLint и / или TypeScript могут кэшировать артефакты частичной сборки (например, ASTs et c) из импортированных зависимостей в node_modules и из файлов проекта sr c, чтобы при изменении одного файла, им не нужно было бы выполнять полную перестройку с нуля.)

Я хотел бы знать, какие шаги я могу предпринять, чтобы профилировать (или отладить или устранить неполадки каким-либо образом) обработку TypeScript и / или TSLint, чтобы найти ответы на некоторые или все следующие вопросы:

* 101 0 * Требуются ли для выполнения некоторых правил литинга очень длительное время? Какие файлы проектов и / или зависимости пакетов вызывают наибольшее замедление? Существуют ли определенные c TypeScript определения типов, интерфейсы или другие языковые конструкции в моих файлах sr c, которые могут вызывать какие-то узкие места или повышенную сложность обработки для TypeScript или TSLint?

Я знаю, что это может быть невозможно ответить на некоторые из приведенных выше вопросов на уровне отдельного файла или даже пакета, но я надеюсь, по крайней мере, выяснить, есть ли какие-либо возможности «режима отладки», встроенные в TSLint или TypeScript, которые могут помочь мне определить, что замедляет работу или какие другие стратегии разработчики успешно использовали в прошлом для решения подобных проблем.

...