ng serve --prod für ng-cli führt zu UglifyJs SyntaxError: Unerwartetes Token: name

8

Ich verwende das Angular-CLI (ng-cli) für mein Projekt. Wenn ich ng serve eintippe, wird die Anwendung ausgeführt. Wenn ich jedoch ng serve --prod eintippe, erhalte ich den folgenden Fehler.

%Vor%

Es ist ein bekanntes Problem, dass UglifyJs ES6 nicht analysieren kann .

Außerdem sind diese SO-Posts ( hier und hier ), schlagen Sie vor, tsconfig.json auf target es5 zu ändern. Was mir unklar ist, ist, ob sie die tsconfig.json des verzehrenden Angular-Projekts oder dasjenige, das zum Erzeugen der Bibliothek verwendet wurde, meinen. Auf jeden Fall hat mein Angular-Projekt tsconfig.json bereits es5 als Ziel. Es sieht wie folgt aus.

%Vor%

Die tsconfig.json der Bibliothek, die in das Angular-Projekt importiert wurde, sieht wie folgt aus und zielt NICHT auf es5 , sondern auf es6 . Übrigens kann ich den Schalter in dieser Bibliothek nicht einfach von es6 zurück zu es5 umdrehen (ich habe es gerade versucht), da ich es6 -Klassen wie Set und Map verwende (die Verwendung dieser Klassen ist so streng, dass es nicht trivial wäre, sie zu ändern, gelinde gesagt, hätte ich von alldem gewusst, hätte ich mich entschieden, es6 ganz zu vermeiden.

%Vor%

Hier sind meine Fragen.

  • Wie kann ich Higlification mit Angular-CLI deaktivieren, wenn ng serve --prod ?
  • verwendet wird?
  • Ist das Problem mit dem es5/es6 -Ziel meines Angular-Projekts oder der importierten Bibliothek?
  • Die SO-Posts legen nahe, dass ich die importierte Bibliothek über Babel (die ich noch nie benutzt habe) vorverarbeiten kann, bevor Angular-CLI über UglifyJs für ng serve --prod zaubert. Ist dieser Vorgang dokumentiert? Wenn ja, lass es mich wissen, wie das geht. Die angular-cli.json ist, wo ich verstehe ng-cli von konfiguriert ist. Ich kann nicht Kopf oder Zahl machen, wie man die Babel-Pre-Processing einbindet, wenn dieser Vorschlag wahr ist.
Jane Wayne 26.01.2017, 02:42
quelle

3 Antworten

3

Es gibt ein paar Tricks, die Sie verwenden können, um die ES6 / ES2015-Minimierung zu behandeln.

Sie können das uglifyjs-webpack-plugin von bebraw verwenden, das UglifyJs vom Webpack entkoppelt. Verwendung ist wie folgt:

%Vor%

Und dann müssen Sie uglify-js reference in Ihrer package.json durch Folgendes ersetzen:

"uglify-js": "git+https://github.com/mishoo/UglifyJS2.git#harmony",

    
Burak Tasci 07.02.2017 10:32
quelle
1
Der Befehl

ng serve ist speziell für den Einsatz in einer Entwicklungsumgebung konzipiert.

versuche zu laufen:

%Vor%

Wenn Sie Ihre App mit IE testen:

führe den Befehl

aus %Vor%

und dann müssen Sie angular-cli.json hinzufügen

%Vor%

oder fügen Sie einfach das in index.html

hinzu %Vor%     
Yoav Schniederman 26.01.2017 06:46
quelle
1

Das Problem, das ich hatte, war mit einem NPM-Modul namens Autotrack von Google. Das Paket befindet sich in ES6 und es handelt sich um eine .js-Datei, so dass Typescript es nicht übertragen hat. Ich musste manuell eine ES5-Version von Autotrack hinzufügen, damit uglify funktioniert.

    
Beanwah 23.06.2017 18:20
quelle