Ожидается, что rootDir будет содержать все исходные файлы в монорепозитории.

Я работаю над преобразованием большого (иш) монорепозитория в TypeScript для клиента, однако я сам новичок в TS и столкнулся с ошибкой, для которой не могу найти очевидного исправления.

TS6059: File '[path to repo root]/packages/config/globals.ts' is not under 'rootDir' '[path to repo root]/packages/components/src'. 'rootDir' is expected to contain all source files.

Файл globals.ts не должен находиться в пакете components, он принадлежит пакету config, поэтому я не совсем понимаю ошибку.

У меня есть основной файл tsconfig в корне репо (https://github.com/serge-web/serge/blob/feature/333-game-admin-channel/tsconfig.json), а затем каждый пакет имеет свой собственный файл tsconfig, который расширяет Вон тот. Один для пакета components находится здесь: https://github.com/serge-web/serge/blob/feature/333-game-admin-channel/packages/components/tsconfig.json

Я предполагаю, что я неправильно расширяю файлы tsconfig в пакетах или неправильно использовал references, но я не могу найти правильный способ сделать это.

Вот ссылка на репо, если вам нужно увидеть структуру: https://github.com/serge-web/serge/tree/feature/333-game-admin-channel


person Alex Foxleigh    schedule 30.03.2020    source источник


Ответы (2)


В конце концов, исправление заключалось в том, чтобы удалить любую ссылку на rootDir из всех файлов, кроме файла tsconfig.json в корне (который я оставил как .).

person Alex Foxleigh    schedule 30.03.2020
comment
Хотя это решает проблему, не кажется ли вам, что rootDir существует по какой-то причине? У меня такая же проблема в моем проекте, но я не думаю, что удаление rootDir безопасно. - person Itay Ganor; 09.04.2020
comment
Да, это определенно раздражающий ответ. rootDir - это шаблон, который пользователи построителя машинописного текста для выходной папки, поэтому его удаление означает, что моя папка сборки не выводится так, как я хотел, однако я просто добавил еще один скрипт узла, чтобы очистить папку, это далеко от идеально, но он выполняет свою работу. - person Alex Foxleigh; 15.04.2020
comment
См. этот ответ для получения информации о rootDir и использовании справочника по проекту. Думаю, станет больше смысла. - person Inigo; 29.04.2020
comment
У меня были те же проблемы, что и с OP, и как только я выполнил работу по преобразованию в Project References, все стало работать намного более гладко! Справедливое предупреждение, мне потребовалось время, чтобы понять, как все правильно настроить (в основном, это исправления моих [плохих] обходных путей для склеивания вещей), но теперь, когда это сделано, он отлично работает. Более быстрые сборки, отсутствие конфликтов с webpack и ts-loader, сохранена возможность перехода к исходному тексту в других подрепозиториях (с использованием декларацияMap) и т. д. - person Venryx; 30.06.2021

Единственное, что у меня сработало, это явное добавление пакета, содержащего сторонний код, в качестве зависимости в package.json:

{
    "dependencies": {
        "@packages/name": "*"
    }
}

В своей настройке я не использую Lerna, а просто необработанные рабочие области Yarn с пакетами TypeScript и JavaScript.

person rodrigoriome    schedule 03.05.2021
comment
Я пытаюсь заставить это работать по-вашему. Не могли бы вы уточнить немного подробнее? Я не хочу использовать псевдонимы путей, просто добавляю свои собственные проекты monorepo в качестве зависимостей для других подпроектов. Это возможно? Спасибо! - person Tirias; 02.07.2021
comment
@Tirias на самом деле да. Я знаю два способа добиться этого. 1) Загрузите свои проекты monorepo в npm, затем npm i их. 2) Используйте ссылку npm для символической ссылки на ваш проект в качестве глобального депа npm (только локально) (docs.npmjs.com/cli/v7/commands/npm-link). - person rodrigoriome; 04.07.2021
comment
Работает как шарм, без необходимости использовать псевдонимы путей и ссылки на пути. Спасибо! - person Tirias; 06.07.2021