Size: a a a

2021 June 25

DZ

Dmitry Zherebko in Frontend UA
так у тебя при сборке тайпскрипт тот же что и с консоли
источник

DZ

Dmitry Zherebko in Frontend UA
npm run tsc --help
источник

DZ

Dmitry Zherebko in Frontend UA
там флаги для диагностики, кра запускает просто слишку с конфгом который в руте
источник

EO

Eugene Obrezkov in Frontend UA
+
источник

DZ

Dmitry Zherebko in Frontend UA
в итоге можешь получить такую штуку
источник

DZ

Dmitry Zherebko in Frontend UA
и видим что у нас 11s это чек тайм
источник

DZ

Dmitry Zherebko in Frontend UA
и тут надо смотреть уже емпирическим методом, что влияет на этот чек тайм
источник

DZ

Dmitry Zherebko in Frontend UA
можно попробывать мемори профиль и посмотреть в хром девтулзах
источник

DZ

Dmitry Zherebko in Frontend UA
https://www.typescriptlang.org/docs/handbook/compiler-options.html вот тут список всех парамтеров и можно уже пытаться угадать что тебе поможет найти проблему
источник

EO

Eugene Obrezkov in Frontend UA
#TypeScript

Как часто у вас случаются ситуации, когда компиляция занимает ощутимо много времени? Вы наверняка хотели бы как-то ускорить этот процесс.

Но как это можно сделать? Обычно, начинают с того, чтобы понять что именно занимает много времени. Для этого, у TypeScript компилятора есть флаг --extendedDiagnostics.

Когда вы запускаете компилятор с этим флагом, он вам выведёт подробную информацию о том, какая фаза компиляции сколько времени заняла.

На примере выше, мы можем увидеть, что компиляция 85,160 строк кода заняла 123 Мб памяти и больше всего времени (1.35 с) заняла фаза Program Time, что не мешает нам жить 🙃

Лично мне, не хватает здесь ещё информации по фазам type check, но для общей диагностики достаточно.

Во времена, когда у вас компиляция проходит минуты, это очень хорошее место с чего стоит начать для локализации проблемного места.

В следующих постах, я раскажу вам несколько практик из разряда "как писать код, чтобы он быстрее компилировался".

Всем хорошего трудового и пятничного дня ☁️
источник

EO

Eugene Obrezkov in Frontend UA
Хотел ссылкой кинуть, сори за пасту
источник

DZ

Dmitry Zherebko in Frontend UA
ну от себя, —listFiles и generateV8CpuProfile для более детального инвестигейшина
источник

AL

Andrey Listochkin in Frontend UA
Files:                        1257
Lines:                      225259
Nodes:                      808425
Identifiers:                283819
Symbols:                    430870
Types:                      139726
Instantiations:            1170171
Memory used:               490890K
Assignability cache size:    72874
Identity cache size:         17112
Subtype cache size:           8035
Strict subtype cache size:    2129
I/O Read time:               0.10s
Parse time:                  1.10s
ResolveTypeReference time:   0.03s
ResolveModule time:          0.70s
Program time:                2.12s
Bind time:                   0.77s
Check time:                  9.85s
Total time:                 12.73s


13 секунд из 2 минут на tsc. По ходу не в нем дело вообще
источник

EO

Eugene Obrezkov in Frontend UA
Минус один, отлично же :)
источник

EO

Eugene Obrezkov in Frontend UA
Осталось расставить timing points и смотреть что из всего пайплайна медленнейших всего
источник

DZ

Dmitry Zherebko in Frontend UA
если дебажить cra можно запустить  DEBUG=* yarn build и будут детальные логи сборки, по всей апке, можно прикинуть где дольше всего проект тормозит, мой guess что это eslint + babel
источник

AL

Andrey Listochkin in Frontend UA
это тупо babel. Сейчас смотрю, мб что-то отрубить можно
источник

AL

Andrey Listochkin in Frontend UA
О, уже есть результат. Обновил browser list базу, и видимо облегчил бабелю жизнь тем, что в современных браузерах гораздо больше всего поддерживается.

135s => 85s
источник

Вт

Ві тя in Frontend UA
можно попробовать бабель заменить esbuild
источник

R🔘

Roman 🔘 in Frontend UA
А там Бабель собирает тс?
источник