Настройка псевдонимов модулей в монорепозитории, загруженном с помощью турборепозитория

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

Проблема, которую я вижу, заключается в том, что псевдоним модуля ts настроен неправильно. В настоящее время у меня есть один пакет пользовательского интерфейса, и я пытаюсь экспортировать компонент кнопки из index.tsx следующим образом (обратите внимание, код VS не жалуется, он думает, что может разрешить модуль):

Однако, когда я пытаюсь собрать свое приложение, я вижу, что модуль на самом деле не разрешен:

Модуль не найден: не удается разрешить «@/components/Button»

Я в недоумении, кто-нибудь знает, как правильно настроить псевдонимы модулей с турбо-репо? Ниже приведен tsconfig.json:

2 ответа

Вам необходимо настроить как packages/ui, так и root .

  1. Внутри packages/ui вы должны установить такие пути;
      // root/packages/ui -> tsconfig.json
{
  "extends": "tsconfig/react-library.json",
  "include": ["."],
  "exclude": ["dist", "build", "node_modules"],
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/components/*": ["components/*"] // Don't use "./components/*", instead like this: "components/*" 
    }
  }
}
  1. в корне также.
      // root -> tsconfig.json
{
  "extends": "your_default_extends",
  "compilerOptions": {
    "plugins": [{your_plugins}],
    "paths": {
      "@*": ["./packages/ui/*"]
    }
  },
  "include": ["your_include"],
  "exclude": ["node_modules"]
}

Если у вас есть другой проект, который также хочет использовать псевдоним import @, просто добавьте маршрут в папку внутри корня.tsconfig.jsonслишком.

      // root -> tsconfig.json
{
  "extends": "your_default_extends",
  "compilerOptions": {
    "plugins": [{your_plugins}],
    "paths": {
      "@*": ["./packages/ui/*", "./apps/some_project/src/*"] // here
    }
  },
  "include": ["your_include"],
  "exclude": ["node_modules"]
}

Посмотрите в этой теме. Вам придется сделать немного проб и ошибок, чтобы сделать это правильно. Но этот ответ приведет нас в правильном направлении.

Другие вопросы по тегам