Früher habe ich die folgende Build-Skript wurde unter Verwendung, um eine Schließung Projekt zu kompilieren:Closure Compiler Abhängigkeit Berechnung viel langsamer als closurebuilder.py
# BUILD SCRIPT 1:
closure-library/closure/bin/build/closurebuilder.py \
--root=closure-library/ \
--root=src/ \
--namespace="entrypoint" \
--output_mode=compiled \
--compiler_jar=compiler.jar \
--compiler_flags="--js=closure-library/closure/goog/deps.js" \
--compiler_flags="--compilation_level=ADVANCED_OPTIMIZATIONS" \
> ../public_html/scripts/compiled.js
Dies korrekt funktioniert, aber ergibt sich die folgende Ausgabe:
closure-library/closure/bin/build/closurebuilder.py: Closure Compiler
now natively understands and orders Closure dependencies and
is prefererred over using this script for performing JavaScript
compilation.
Please migrate your codebase.
See:
https://github.com/google/closure-compiler/wiki/Managing-Dependencies
Nach vielen Versuchen habe ich endlich den Compiler richtig funktioniert (einschließlich der erforderlichen goog.
libs):
# BUILD SCRIPT 2:
java -jar compiler.jar \
--js "src/**.js" \
--js "closure-library/closure/goog/**.js" \
--js "!closure-library/closure/goog/**_test.js" \
--dependency_mode=STRICT \
--entry_point=entrypoint \
--compilation_level=ADVANCED_OPTIMIZATIONS \
--js_output_file=../public_html/scripts/compiled.js
Dies ergibt ähnlichen kompilierten Code (einige Teile werden neu geordnet, einige Variablennamen werden geändert, aber keine wichtigen Unterschiede). Build-Skript 2 dauert jedoch etwa 50% länger zu laufen (45 Sekunden im Vergleich zu 30 Sekunden).
Ist mein Build Skript 2 irgendwie inkorrekt/weniger effizient als es sein sollte? Wenn nicht, warum ist die wesentlich langsamere Kompilierungsmethode "bevorzugt"?
Ja, aber das bedeutet im Grunde genommen: 1. Generieren Sie Deps mit Builder 2. übergeben Sie nur generierte Deps zum Schließen –
Diese Antwort ist 5 Jahre alt und nicht mehr korrekt. –
Vielleicht im Detail, aber im Allgemeinen ist es ls. Closure-Builder kann Dateien vorfiltern, die an den Compiler übergeben werden müssen. Wenn Sie einen rohen Closing-Compiler verwenden, ist es erstaunlich langsam. –