Kann ich ClojureScript ohne die Google Closure-Lib kompilieren?

8

Ich bin ein großer Fan von Clojure und ClojureScript, und im Allgemeinen würde ich ClojureScript gegenüber anderen Alternativen für meine Projekte bevorzugen, aber eine Sache, die mich manchmal daran hindert, sie zu verwenden, insbesondere bei kleineren Projekten, ist ~ 80kb hinzugefügt durch die Einbeziehung der Google Closure-Bibliothek in das generierte Javascript, auch wenn ich die API in meinem Code nicht verwende.

Gibt es eine Möglichkeit, ClojureScript zu kompilieren, die dieses zusätzliche Gewicht vermeidet?

    
Dane 15.04.2013, 03:39
quelle

2 Antworten

11

Die zusätzliche Größe stammt nicht aus der Google Closure-Bibliothek. Wenn Sie erweiterte Optimierungen aktiviert haben, entfernt der Closure-Compiler alle Closure-Bibliothekscodes, die Sie nicht aus dem endgültigen JavaScript verwenden. Vielmehr scheint das JavaScript groß zu sein, da es eine ganze Clojure-Laufzeit gibt, die Dinge wie Lazy Seqs, Versprechungen und alles andere implementiert.

    
Kevin L. 15.04.2013, 14:36
quelle
6

Korrektur: Wie Zubair darauf hinweist, wird durch den folgenden Schritt die Google Closure-Optimierung deaktiviert, der Google Closure-Code wird jedoch NICHT aus dem endgültigen JavaScript entfernt. Sie sollten erweiterte Optimierung wählen, um nicht verwendetes JavaScript zu entfernen, wie die andere Antwort nahe legt.

In ClojureScript: Up and Running erklären die Autoren, wie Sie den Google Closure-Schritt deaktivieren:

>
  

Mit einem :optimizations -Wert von :none [in project.clj ] der Google Closure-Compiler   wird überhaupt nicht aufgerufen, und der Build schreibt die   JavaScript wird direkt vom ClojureScript-Compiler erzeugt. Dieser Modus   ist nützlich für die Entwicklung und das Debugging. Allerdings das JavaScript   Die Ausgabe wird auf viele einzelne Dateien aufgeteilt und erfordert etwas   unterschiedliche Handhabung in einem Browser [...]

Beachten Sie, dass dies die Größe des produzierten JavaScript reduzieren kann oder auch nicht, da Google Closure einiges an Arbeit leistet, um alles auszulöschen, was Ihr Code nicht speziell aufruft. Es lohnt sich, mit den verschiedenen Werten von :optimizations ( :none , :whitespace , :simple und :advanced ) herumzuspielen und zu sehen, wie groß das resultierende JavaScript in jedem Fall ist.

    
JohnJ 15.04.2013 04:20
quelle

Tags und Links