Size: a a a

JavaScript.Ninja

2021 April 19

VN

Vladislav Navrocky in JavaScript.Ninja
Господа, ищу пример монорепозитория с Typescript+React чтобы работал type checking в либах. Уже кучу перебрал примеров на гитхаб - не могу найти нормального. Помогите пож, может кто встречал такое?
источник

II

Ilya Izilanov in JavaScript.Ninja
у frontend masters был прямо отдельный курс про это
источник

AM

Alex Makarov in JavaScript.Ninja
не очень понятна проблема по описанию если честно. А именно что значит "чтобы работал type checking в либах".
источник

AI

Arthur Irgashev in JavaScript.Ninja
немного не понял про тайпчекинг в либах. каких именно ? В npm или твоих собственных ?
источник

AI

Arthur Irgashev in JavaScript.Ninja
вот, плюсик )
источник

II

Ilya Izilanov in JavaScript.Ninja
собственных
источник

VN

Vladislav Navrocky in JavaScript.Ninja
ну берешь пишешь ошибку в либе, запускаешь сборку и она не фейлится.
источник

M

Michael in JavaScript.Ninja
то, что доктор прописал! А то от этих модулей уже голова болит
источник

VN

Vladislav Navrocky in JavaScript.Ninja
а должна
источник

AI

Arthur Irgashev in JavaScript.Ninja
если в собственных, то тебе .d.ts файлики нужно генерировать после компиляции
источник

AM

Alex Makarov in JavaScript.Ninja
ну собственным либам надо эмитить .d.ts файлы
источник

II

Ilya Izilanov in JavaScript.Ninja
угу
источник

AM

Alex Makarov in JavaScript.Ninja
Непонятно как генерировать .d.ts файлы или какие-то именно монореповые проблемы (ну там шаринг типов между пакетами)?
источник

VN

Vladislav Navrocky in JavaScript.Ninja
Я сперва пытался поднять просто, руками написав конфиг для webpack, но быстро понял, что не осилю прикручивать всё то что есть в CRA. Потом я понаходил множество примеров где твикают CRA чтобы он мог работать с монорепой и видеть зависимости. И все как бы работает, компилится и запускается. Но проверка на ошибки и ворнинги работает только для сорцов в самом приложении, а в зависимых либах не работает.
источник

VN

Vladislav Navrocky in JavaScript.Ninja
Я уже пытался для плагина ESLint указать корень проекта вместо дефолтного, не помогает. Для ForkTsCheckerWebpackPlugin вообще не пойму как указать корень исходников, похоже это он отвечает за проверку типов
источник

AM

Alex Makarov in JavaScript.Ninja
в cra кастомная проверка на ошибки, а не какая-то стандартная (вот это красное окошко в браузере показывающее ошибки типов).
Я когда выпиливал cra вообще ее выкинул чтобы не мешалась.
Также надо понимать что cra типы не эмитит, потому что там тайпскрипт компилируется бабелем, а компилятор тайпскрипта только тайпчекает (это распространенный подход)
источник

VN

Vladislav Navrocky in JavaScript.Ninja
Эта штука в браузере как раз работает
источник

AM

Alex Makarov in JavaScript.Ninja
cra - не инструмент для либ. Если ты хочешь свою либу, сэкономишь кучу нервов выкинув cra и написав кастомный конфиг с нуля.
источник

AI

Arthur Irgashev in JavaScript.Ninja
тут два варианта:
1) вотчить изменения вне твоего проекта, который запущен. это сложнее
2) при изменении модуля делать рекомпайл либы и перетирать исходники
источник

AI

Arthur Irgashev in JavaScript.Ninja
в первом случае у тебя за линтинг будет отвечать линтер самого приложения, во втором - компилятор тса + кастомный конфиг, если добавишь
источник