#инструмент дня
История от подписчика!
На иллюстрациях — время прогона тестов, стало и было. Как добиться подобного?
Сменой тулинга, конечно же!
Переход с ts-jest на @swc/jest даёт ощутимый прирост скорости. ts-jest завязан на стандартный TypeScript-компилятор. Он работает в одном потоке, выполняет полноценную проверку типов и в целом довольно медленно трансформирует файлы. В больших проектах это приводит к заметной задержке перед запуском любого тестового набора.
@swc/jest использует SWC — транспайлер, написанный на Rust. Его ключевые особенности:
* трансформация работает в нативном коде без виртуальной машины;
* парсер и трансформер многопоточные;
* типы не проверяются, а просто удаляются;
* преобразование максимально близко к «быстрому проходу».
Для тестов это идеальный сценарий: типизация проверяется отдельно, а от тестового раннера требуется лишь быстрое преобразование модулей.
Дополнительно ускорить прогон помогает параллелизация. В GitLab CI достаточно указать:
...и тесты будут запускаться одновременно в нескольких процессах.
Результаты после перехода на @swc/jest:
* 54 тестовых набора, 1018 тестов, 100 снапшотов — 4.48 секунды.
* Меньшая выборка — 13 наборов, 258 тестов — 4.23 секунды.
Ускорение достигается только заменой трансформера: многопоточная трансформация в SWC + отсутствие тайпчекера даёт сразу заметный выигрыш без изменений в самих тестах.
Какой тулинг у вас, котаны?
#swc #jest #typescript
История от подписчика!
На иллюстрациях — время прогона тестов, стало и было. Как добиться подобного?
Сменой тулинга, конечно же!
Переход с ts-jest на @swc/jest даёт ощутимый прирост скорости. ts-jest завязан на стандартный TypeScript-компилятор. Он работает в одном потоке, выполняет полноценную проверку типов и в целом довольно медленно трансформирует файлы. В больших проектах это приводит к заметной задержке перед запуском любого тестового набора.
@swc/jest использует SWC — транспайлер, написанный на Rust. Его ключевые особенности:
* трансформация работает в нативном коде без виртуальной машины;
* парсер и трансформер многопоточные;
* типы не проверяются, а просто удаляются;
* преобразование максимально близко к «быстрому проходу».
Для тестов это идеальный сценарий: типизация проверяется отдельно, а от тестового раннера требуется лишь быстрое преобразование модулей.
Дополнительно ускорить прогон помогает параллелизация. В GitLab CI достаточно указать:
parallel: 3
...и тесты будут запускаться одновременно в нескольких процессах.
Результаты после перехода на @swc/jest:
* 54 тестовых набора, 1018 тестов, 100 снапшотов — 4.48 секунды.
* Меньшая выборка — 13 наборов, 258 тестов — 4.23 секунды.
Ускорение достигается только заменой трансформера: многопоточная трансформация в SWC + отсутствие тайпчекера даёт сразу заметный выигрыш без изменений в самих тестах.
Какой тулинг у вас, котаны?
#swc #jest #typescript
1👍8
tgoop.com/htmlshit/3919
Create:
Last Update:
Last Update:
#инструмент дня
История от подписчика!
На иллюстрациях — время прогона тестов, стало и было. Как добиться подобного?
Сменой тулинга, конечно же!
Переход с ts-jest на @swc/jest даёт ощутимый прирост скорости. ts-jest завязан на стандартный TypeScript-компилятор. Он работает в одном потоке, выполняет полноценную проверку типов и в целом довольно медленно трансформирует файлы. В больших проектах это приводит к заметной задержке перед запуском любого тестового набора.
@swc/jest использует SWC — транспайлер, написанный на Rust. Его ключевые особенности:
* трансформация работает в нативном коде без виртуальной машины;
* парсер и трансформер многопоточные;
* типы не проверяются, а просто удаляются;
* преобразование максимально близко к «быстрому проходу».
Для тестов это идеальный сценарий: типизация проверяется отдельно, а от тестового раннера требуется лишь быстрое преобразование модулей.
Дополнительно ускорить прогон помогает параллелизация. В GitLab CI достаточно указать:
...и тесты будут запускаться одновременно в нескольких процессах.
Результаты после перехода на @swc/jest:
* 54 тестовых набора, 1018 тестов, 100 снапшотов — 4.48 секунды.
* Меньшая выборка — 13 наборов, 258 тестов — 4.23 секунды.
Ускорение достигается только заменой трансформера: многопоточная трансформация в SWC + отсутствие тайпчекера даёт сразу заметный выигрыш без изменений в самих тестах.
Какой тулинг у вас, котаны?
#swc #jest #typescript
История от подписчика!
На иллюстрациях — время прогона тестов, стало и было. Как добиться подобного?
Сменой тулинга, конечно же!
Переход с ts-jest на @swc/jest даёт ощутимый прирост скорости. ts-jest завязан на стандартный TypeScript-компилятор. Он работает в одном потоке, выполняет полноценную проверку типов и в целом довольно медленно трансформирует файлы. В больших проектах это приводит к заметной задержке перед запуском любого тестового набора.
@swc/jest использует SWC — транспайлер, написанный на Rust. Его ключевые особенности:
* трансформация работает в нативном коде без виртуальной машины;
* парсер и трансформер многопоточные;
* типы не проверяются, а просто удаляются;
* преобразование максимально близко к «быстрому проходу».
Для тестов это идеальный сценарий: типизация проверяется отдельно, а от тестового раннера требуется лишь быстрое преобразование модулей.
Дополнительно ускорить прогон помогает параллелизация. В GitLab CI достаточно указать:
parallel: 3
...и тесты будут запускаться одновременно в нескольких процессах.
Результаты после перехода на @swc/jest:
* 54 тестовых набора, 1018 тестов, 100 снапшотов — 4.48 секунды.
* Меньшая выборка — 13 наборов, 258 тестов — 4.23 секунды.
Ускорение достигается только заменой трансформера: многопоточная трансформация в SWC + отсутствие тайпчекера даёт сразу заметный выигрыш без изменений в самих тестах.
Какой тулинг у вас, котаны?
#swc #jest #typescript
BY Будни разработчика


Share with your friend now:
tgoop.com/htmlshit/3919
