zero config запускатор typescript



Сегодня новый для меня формат полезностей. Очень захотелось поделиться инструментом, который я нашёл при разработке микрокурсов – tsx



Была ли у вас задача просто запустить ts файл?



У меня – да. Много, много, много раз... Сиды, базы данных, скрипты для работы с файлами, генераторы кода. И много всего прочего



И бесит, что каждый раз какие то проблемы. Требуются тучи манипуляций



Как это на базовом tsc

npm init -y

npx tsc main.ts

node main.js


3 команды вроде как всего. Но это чаще всего работать не будет. Почти всегда потребуется конфигурация системы модулей, версии стандартной билиотеки, jsx... и всё равно работать не будет – модули не те, или ещё что...



Как будто должен эту проблему решать ts-node



ts-node main.ts




Но не тут то было. Если это один файл, может и сработает. Но если у вас есть там импорты, опять же нужна доп конфигурация. И она точно будет отличаться от той, которая у вас в проекте. Придётся держать специальный отдельный конфиг под ts-node 🥲



По этой причине я писал все свои скрипты раньше на Deno, а теперь на Bun.



Там как раз всё с этим хорошо. В Deno можно даже зависимости предварительно не ставить, просто ссылку делаешь, и всё.

Но у Deno проблемы были долгое время со взаимодействием с node. А вот у bun вообще всё с этим замечательно)



bun main.tsx




Вот это будет реально работать почти всегда



Но не везде есть bun



Если вы запускаете свои скрипты на ci, то может оказаться, что bun там просто не поставить



И тут я нашёл либу tsx. zero config запускатор typescript кода в node.js. С ним просто мало проблем)



npx tsx main.ts


Заработает везде, где есть npm. Жалко только зависимости всё равно придётся ставить



Последний раз мучался и мучался с запуском сидов. Видите ли, они используют файлы из next.js приложения, а там нужна особая конфигурация.



В результате без дополнительных проблем заработало в:

- bun

- tsx



Так что, если вам нужно просто запустить файл, но не хочется возиться с конфигами — tsx очень удобное решение