2017-09-20 58 views
7

Pracuję nad biblioteką Angular, którą dostosowuję do kompilacji AOT. Mam go uruchomionego za pomocą kilku zadań do dudnienia około ngc, ale wolałbym użyć @ngtools/webpack, ponieważ pozwala mi to bardziej prostą metodę użycia SASS i PUG dla moich stylów i szablonów. Nie mogę jednak znaleźć sposobu na usunięcie plików deklaracji lub metadanych ze swojego wirtualnego systemu plików. Czy istnieje sposób na wyemitowanie tych plików?Czy mogę wysyłać pliki metadanych typowania/deklaracji (.d.ts) i metadanych dekoratora (.metadata.json) za pomocą @ ngtools/webpack?

+1

Natknąłem się kilka artykułów, które mogą pomóc: [to] (http://blog.mgechev.com/2017/ 01/21/rozpowszechnianie-an-kąt-biblioteka-aot-ngc-typy /) i & [to] (https://medium.com/@isaacplmann/getting-your-angular-2-library-ready-for-aot -90d1347bcad). > Cytowanie z jednego z artykułów "Domyślnie ngc generuje ngfactories dla komponentów i modułów. Za pomocą flagi skipTemplateCodegen możemy pominąć to i otrzymujemy tylko pliki * .metadata.json." –

Odpowiedz

0

Dla declarations trzeba zmienić const lambda => funkcja eksportu.

To

const declarations =() => [ 
    Component 
]; 

do

export function declarations() { 
    return [ 
    Components 
    ]; 
} 

następnie zastąpić tsc w skrypty rozdział w swojej package.json z ngc.

Teraz od (this comment on github)

Wszystkie użyte biblioteki musi zawierać plik .metadata.json wzdłuż boku żadnych plików .d.ts oni produkują w przeciwnym razie nie będzie działać poprawnie z NGC. Plik .metadata.json zawiera informacje, których potrzebujemy w oryginalnym pliku .ts, ale nie został uwzględniony w pliku .d.ts. Jeśli nie mamy tych informacji, nie możemy wygenerować fabryk dla biblioteki.

  • Więc upewnij się, że _ .metadata.json pliki są obok ich związanych *.d.ts plików.

  • Ponieważ używasz WebPacka, najpierw musisz użyć ngc, a następnie WebPacka na skompilowanym kodzie.


Źródła
1. Making your Angular 2 library statically analyzable for AoT
2. Getting your Angular 2 library ready for AoT

+1

Racja, już mogę to zrobić. Pytanie dotyczyło użycia @ ngtools/webpack, co pozwoliłoby mi wykorzystać wszystkie zalety korzystania z pakietu internetowego. –