2016-07-04 15 views
0

Ich versuche Angular 2 RC4 Compiler-CLI, um Projektkomponenten offline kompiliert zu bekommen und ich bin in einige Probleme in hier laufen.Angular 2 RC 4 Compiler-CLI-Fehler

Nur für einen Hinweis, ich bin mit Richtungen, die hier gefunden werden kann: http://blog.mgechev.com/2016/06/26/tree-shaking-angular2-production-build-rollup-javascript/

Also, mein Plan ist, dass wir hier ein mehrere private npm Pakete sind, die alle für ES5 Ziel ausgeführt wurden, mit es205-Version dieses Pakets geschachtelt in esm-Ordner und jsnext: Haupt-Tag an Stelle, die auf esm/core.js zeigt.

Wie das getan wird, baue ich ein Projekt, das erfolgreich diese externen Module lädt und eine Anwendung erstellt, die tatsächlich ohne Probleme ausgeführt wird. Um es noch besser zu machen, möchte ich alle Techniken anwenden, die im oben genannten Web-Post beschrieben sind.

Um all das zu tun, ich eine TSconfig-Datei erstellt habe, das Ziel und Modul es2015 setzt und laufe:

node_modules/.bin/ngc -p . 

Und ich bin dieses Build-Server auf Linux zu tun.

Problem all dieser Einrichtung ist, dass einige Komponenten aus irgendeinem Grund in externen Paketen beschrieben kann nicht richtig von ngc analysiert werden, und ich bin immer:

Error: No Directive annotation found on *external component* 

Fehler für jede Verwendung von Komponenten in Kernpaket befindet.

Also, kann mir jemand zeigen, was mit dieser Einrichtung falsch ist und wie kann das gelöst werden?

ich wirklich sehen möchten, wie Paketgröße, wie in Endlayout ...

aussehen würde

Außerdem habe ich, dass Dekorateur einige Beispiele verwenden moduelId innerhalb @Component bemerkt, aber ich habe keine Notwendigkeit gesehen Dafür, zumindest jetzt - könnte das ein Problem sein?

PS

Wenn ich diese Fehler ignorieren und versuchen, gehen ich sehe, dass alle Komponenten, die eine dieser externen Komponenten produzieren Fehler wurden, einschließlich, * .ngfactory.ts als leere Datei erzeugt wird.

PPS

Alternativ könnte ich die ganze Projekt von einfachen ts Dateien kompiliert. Aber dann stoße ich auf ein großes Problem damit, wie man alle Verweise auf my-local-core auf einen lokalen Ordner mit den Quelldateien dieses Pakets umleitet, da dieses Modul bereits dem node-modules-Ordner zugeordnet ist.

Antwort

1

Antwort auf all das ist, dass angulare Compiler-CLI ist immer noch nicht in einem Zustand, in dem es offline kompilieren von etwas größer als Hallo Welt Projekt ist. Vor allem gibt es eine große Quelle von Missverständnissen mit einer Art und Weise wie Vorlage URLs analysiert werden, als wenn eckige Komponenten ohne vorherige Kompilierung bereitgestellt werden diese URLs werden als globale genommen, abgeleitet von Webseiten-URL. Obwohl es bei der Vorkompilierung alle URLs relativ zur Komponente ts-Datei gibt, verwenden wir keine absoluten URLs. Daher verwenden wir keine Offline-Kompilierung, aber wenn wir relative URLs verwenden, funktioniert das nicht im nicht vorkompilierten Modus. Zweitens kann jede Komponente, die in einem externen Paket definiert ist, nicht in ihre vorkompilierte Version geparst werden, da der Compiler-cli keine Kenntnisse darüber hat, was er mit der darin enthaltenen JavaScript-Version machen soll. Und das gilt für verschiedene Modulformate einschließlich es2015. Drittens kann ngc nicht benutzerdefinierte Dekorierer und Funktionalität, die gut funktioniert in TSC Bremsen mit "Fehler beim Auflösen von Symbolwerten statisch", wie es trifft jede Instanz davon.

Wir freuen uns auf RC 5 oder höchstwahrscheinlich endgültige Version von Angular2.

Verwandte Themen