2015-08-22 28 views
5

Caniningen può essere configurato in modo tale da raggruppare tutto il JS compilato in un singolo file? Attualmente produce oltre un centinaio di file, che sarebbero molto lenti nella produzione.ClojureScript Leiningen compila in un singolo file .js?

Sto usando Chestnut boilerplate, a proposito. La documentazione dice:

D: Voglio solo compilare ClojureScript su JavaScript completamente ottimizzato, quindi posso usarlo in un sito HTML statico.

A: Richiamare cljsbuild con il profilo uberjar attivo, come questo: lein with-profile -dev,+uberjar cljsbuild once, quindi cercare resources/public/js/app.js.

Ho provato, ma il risultante app.js è ancora solo carica le dipendenze da altri file, non contiene l'intera app.

+1

Come appare il tuo 'project.clj'? Probabilmente stai usando ': optimization: none'. https://github.com/clojure/clojurescript/wiki/Compiler-Options#optimizations – muhuk

+0

Aggiungi un altro '[: cljsbuilds: builds ...]' alla tua mappa con 'optimization: advanced' – ClojureMostly

risposta

1

Sembra che lein with-profile -dev,+uberjar cljsbuild once generi un singolo pacchetto .js. :uberjar profilo ha già :optimizations :advanced opzioni in:

:uberjar {:source-paths ["env/prod/clj"] 
         :hooks [leiningen.cljsbuild] 
         :env {:production true} 
         :omit-source true 
         :aot :all 
         :main calc-pack.server 
         :cljsbuild {:builds {:app 
              {:source-paths ["env/prod/cljs"] 
              :compiler 
              {:optimizations :advanced 
               :pretty-print false}}}}} 

A quanto pare, non funzionava correttamente a causa di errori nel mio codice.