Как использовать ссылки Typescript и режим сборки для компиляции моно репо в безсерверный пакет?

Typescript недавно представил новую функцию для работы с monorepos: ссылки. Указав ссылки, вы можете собрать все взаимозависимые пакеты, используя tsc -b (см. также этот блог)

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

https://github.com/tommedema/serverless-mono-example

Хотя здание хорошо работает с tsc -bпроблема в том, что безсерверной инфраструктуре необходимо загрузить один артефакт.zip (в моем случае в AWS). При создании службы без сервера, как в этом примере, будут объединяться только скомпилированные файлы ближайших исходных файлов.

Как можно использовать функцию ссылок машинописи для использования с бессерверными моно репо?

1 ответ

Решение

Если вам нужно сгенерировать один выходной файл и использовать загрузчик модулей, вы можете использовать outFile а такжеprepend,

Если вам нужно несколько выходных файлов, возможно, стоит подать предложение попросить опцию для объединения зависимостей в этом случае; Вы будете вторым человеком, который спрашивал об этом сегодня на Stack Overflow. Изменить: предложение здесь.

Изменить 2: После обширного обсуждения, заключение должно было включить nohoist опция в окончательном рабочем пространстве Yarn, которая дает нам символические ссылки из node_modules в другие рабочие места. После того как мы позвоним tsc -b в последнем рабочем пространстве инструмент упаковки без сервера следует по символическим ссылкам и создает zip-файл с правильной структурой. На уровне TypeScript пакетирование не требуется. Предостережение: Yarn, похоже, устанавливает devDependencies зависимостей в конечной рабочей области, что мне кажется неправильным и приводит к тому, что Serverless без необходимости включает эти модули в комплект.

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