`ng build` пропускает / не генерирует компоненты для файлов .d.ts библиотеки Angular 6 (определения типов не генерируются для некоторых компонентов) - PullRequest
1 голос
/ 18 марта 2019

Я пытаюсь опубликовать библиотеку компонентов Angular 6+ для рабочего проекта и столкнулся с подозрительной проблемой, которая выглядит как ошибка компилятора.

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

https://github.com/bradkovach/porcelain/tree/master/projects/porcelain/src

Проект был создан с ng generate library и теперь теоретически готов к отправке в npm.Всякий раз, когда я запускаю ng build porcelain, проект компилируется без ошибок, но в скомпилированном результате отсутствуют определения типов для двух компонентов SimpleRefinerComponent и DateRefinerComponent.Я обнаружил следующую статью StackOverflow , которая, по-видимому, страдала той же проблемой, но заявленное решение не сработало для меня.

Я создал проект на отдельной машине с помощью этих команд...

git clone git@github.com:bradkovach/porcelain.git
npm install
ng build porcelain

Вот как выглядит файл public_api.ts в projects/porcelain/src/public_api.ts ...

/**
 * Porcelain exposed components.
 */

export { PorcelainModule } from './lib/porcelain.module';
export { PorcelainComponent } from './lib/porcelain.component';

export { SimpleRefinerModule } from './lib/simple-refiner/simple-refiner.module';
export { SimpleRefinerComponent } from './lib/simple-refiner/simple-refiner.component';

export { DateRefinerModule } from './lib/date-refiner/date-refiner.module';
export { DateRefinerComponent } from './lib/date-refiner/date-refiner.component';

export { RefinersModule } from './lib/refiners/refiners.module';
export { RefinersComponent } from './lib/refiners/refiners.component';

export * from './lib/refiners/IOption';
export * from './lib/refiners/IOptions';
export * from './lib/refiners/IRefiner';
export * from './lib/refiners/IRefinerValue'

Когда я запускаю ng build, он создает следующий public_api.файл d.ts ...

/**
 * Porcelain exposed components.
 */
export { PorcelainModule } from './lib/porcelain.module';
export { PorcelainComponent } from './lib/porcelain.component';
export { SimpleRefinerModule } from './lib/simple-refiner/simple-refiner.module';
export { SimpleRefinerComponent } from './lib/simple-refiner/simple-refiner.component';
export { DateRefinerModule } from './lib/date-refiner/date-refiner.module';
export { DateRefinerComponent } from './lib/date-refiner/date-refiner.component';
export { RefinersModule } from './lib/refiners/refiners.module';
export { RefinersComponent } from './lib/refiners/refiners.component';
export * from './lib/refiners/IOption';
export * from './lib/refiners/IOptions';
export * from './lib/refiners/IRefiner';
export * from './lib/refiners/IRefinerValue';

Экспорты SimpleRefinerComponent и DateRefinerComponent сообщают о следующих ошибках соответственно

  • Cannot find module './lib/simple-refiner/simple-refiner.component'.ts(2307)
  • Cannot find module './lib/date-refiner/date-refiner.component'.ts(2307)

Я пробовал

  • Вышеупомянутый вопрос StackOverflow
  • Удалите и переустановите node_modules
  • Клонирование нового экземпляра проекта
  • Обновление до самых последних @angular/*@^6.0.0 и последних @angular-devkit/* пакетов.
...