«Правильный» способ совместного использования кода в TypeScript, nodejs и JavaScript

#javascript #node.js #reactjs #typescript #webpack

Вопрос:

Я хочу иметь монорепо, которое содержит следующее:

  • shared : набор классов машинописи, которые можно использовать в ЛЮБОМ МЕСТЕ
  • WebClient : веб-приложение react на JavaScript (в котором необходимо использовать код shared )
  • WebServer : серверное приложение TypeScript для приложения react (которое также должно использовать shared код)

Ключевой вопрос заключается в следующем: как определить, настроить и получить доступ к общему коду?

Я совершенно потерялся, я перепробовал сотню разных подходов, но ничего не работает. Любая помощь будет признательна.

ПРИМЕЧАНИЕ: ценю любые комментарии, но, пожалуйста, объясните, как будто мне 5 лет! Мини-репо на GitHub с 3 проектами HelloWorld было бы здорово!

Комментарии:

1. вы думали о том, чтобы создать пакет npm из общего кода и импортировать его при необходимости? сохранение его как отдельного проекта

2. эй, вы можете использовать lerna и yarn рабочие пространства для достижения этой цели

3. Спасибо, мне нужно гораздо больше деталей, пожалуйста. Я перепробовал ВСЕ.

4. конкретно, что вы пробовали? как же они потерпели неудачу?

5. «Я перепробовал сотню разных подходов, и ничего не работает», — старайтесь усерднее. Если вы просто наберете в Google monorepo react typescript, у вас будет масса рабочих примеров. (PS: Я недавно начал использовать lerna / yarn workspaces и в Интернете есть много замечательных статей 🙂 )

Ответ №1:

Установите Lerna и используйте ее для управления shared классами в виде пакетов. Прочитайте документацию и не бойтесь экспериментировать с ней.

Если вы хотите увидеть репозиторий Github, в котором используется Lerna, их довольно много, один из которых-Шутка Facebook.

https://github.com/facebook/jest

Комментарии:

1. Я пытался это сделать, но у меня ошибка при импорте общего модуля. Каким должен быть модуль в tsconfig.json, чтобы он поддерживался как внешним, так и внутренним интерфейсом?