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

Микро-интерфейсное исследование.Я создал образец углового приложения с помощью 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 есть что-то волшебное в процедуре сборки, которое я не могу понять.Извлечение не вариант, так как Angular 6+ еще не реализовал эту функцию.

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

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

...