Боюсь, что с ng-packagr это непростая задача.
Для каждого «проекта», который вы пытаетесь упаковать, ng-packagr автоматически обнаруживает все вторичные пакеты.
ng-packagr игнорирует tsconfig.lib.json
файлы вторичных пакетов, он будет использовать файл tsconfig, предоставляемый с первичным пакетом.
Затем он загружает программу TS для основного и всех вторичных пакетов,перед компиляцией с помощью tsconfig первичного.
Это делается таким образом, чтобы упаковщик мог затем проанализировать код и создать дерево зависимостей, которое сообщит ему, какой пакет визуализировать первым, вторым и т. д.... ДА , это также означает, что ng-packagr НЕ предполагает, что вторичный пакет всегда зависит от первичного, это может быть другой путь и он действителен ...
Теперь до этого момента все должно быть в порядке, без ошибок и т. Д. Программа TS создается для всех пакетов, но ничего не выдается, поэтому все хорошо.
Ошибка, которую вы видите, появляется вфаза mpilation, где компилятор пытается испустить файлы и выкинуть их.Это когда ng-packagr регистрирует «Компиляция источников TypeScript через ngc»
На этом этапе машинопись не устраивает ссылку на файл вне корня, что имеет место.
Одним из решений является обновление свойства paths
в tsconfig
, чтобы оно указывало на выходной каталог для каждого пакета, который был собран.Поэтому, если пакет A был только что скомпилирован, мы изменяем / создаем paths
запись, которая указывает на выходную библиотеку, которая не будет рассматриваться как источник TS ... таким образом, нет ошибки.
Это будет работать, у меня естьпротестировал его, но, к сожалению, он требует некоторой работы либо в ng-packagr
исходном коде, либо, как я это сделал, с помощью пользовательского компоновщика угловых устройств devkit ...
С его помощью вы можете заменять paths
сразу после каждогоКомпиляция завершена, поэтому следующая компиляция будет ссылаться на встроенный вывод, а не на исходный код.
Поскольку пакеты сборки ng-packagr основаны на графе зависимостей, можно с уверенностью предположить, что это будет работать.