Как опубликовать рабочий исходный код полного углового приложения в npm?

Микро-интерфейсное исследование. Я создал образец углового приложения с помощью cli и вместо начальной загрузки приложения создаю точку входа, например:

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { R3CompAngGeneratedModule } from './r3-comp-ang-generated.module';

enableProdMode();

export const mount = (htmlElement: HTMLElement) => {
  htmlElement.innerHTML = `<app-root></app-root>`;
  platformBrowserDynamic().bootstrapModule(R3CompAngGeneratedModule)
  .catch(err => console.log(err));
}

Я устанавливаю свойство entry в package.json, чтобы указать на этот файл ts, упаковать его, опубликовать и в другом проекте, установить и вызвать его так:

import { mount } from 'r3-comp-ang-generated';
const root = document.getElementById("angular-root");
mount(root);

Затем с помощью веб-пакета я связываю его вместе (используя второй фрагмент кода в качестве точки входа) и запускаю его локально. И, к моему большому удивлению, я получаю ошибку.

Uncaught Error: Can't resolve all parameters for ApplicationModule: (?).
at syntaxError (util.ts:100)
at CompileMetadataResolver._getDependenciesMetadata(metadata_resolver.ts:959)
at CompileMetadataResolver._getTypeMetadata (metadata_resolver.ts:839)
at CompileMetadataResolver.getNgModuleMetadata (metadata_resolver.ts:683)
at CompileMetadataResolver.getNgModuleSummary (metadata_resolver.ts:453)
at metadata_resolver.ts:589
at Array.forEach (<anonymous>)
at CompileMetadataResolver.getNgModuleMetadata (metadata_resolver.ts:572)
at CompileMetadataResolver.getNgModuleSummary (metadata_resolver.ts:453)
at metadata_resolver.ts:551

Техника монтажа работает на основе проекта cli. Я нажму нг служить, и я вижу приложение. (до публикации)

Этот точный подход прекрасно работает с реакцией (сгенерированным проектом). Почему я не могу сделать то же самое с угловым? Я почти уверен, что в проекте CLI есть что-то волшебное в процедуре сборки, которое я не могу понять. Изгнание не вариант, так как Angular 6+ еще не реализовал эту функцию.

Я хотел бы сделать это таким образом, чтобы я мог использовать npm как инструмент для контроля версий и зависимостей. Например, если бы я импортировал два угловых приложения, одно из которых работало на ^6.0.0, а другое на ^6.2.0, то в последнем пакете я бы получил только один экземпляр ^6.2.0 .

Большое спасибо!

0 ответов

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