2012-10-14 11 views
9

Nel mio codice ClojureScript Ho il seguente:Ottieni Clojurescript repl/connect per non compilare quando in produzione?

(defn onload [] (repl/connect "http://localhost:9000/repl")) 

(set! (.-onload js/window) onload) 

Il REPL ClojureScript è molto utile in fase di sviluppo, ma sono riluttanti a lasciare nel codice durante la produzione. Qual è il modo più pulito di avere il codice sopra presente durante lo sviluppo (compilazione semplice), ma assente durante la produzione (compilazione avanzata)?

risposta

3

Sfortunatamente non ci sono attualmente modi ben definiti per eseguire la compilazione condizionale in ClojureScript.

È possibile aggiungere variabili di configurazione per controllare se avviare un REPL in vari modi, ma un modo semplice e veloce sarebbe ottenere il nome host della pagina corrente e invocare solo repl/connnect se fosse "localhost" o qualunque altro dominio tu stia usando per il lavoro di sviluppo.

+0

Pensando ad alta voce, ciò significherebbe anche che tutto il codice per repl/connect finirebbe per essere compilato nel mio codice di produzione. Onestamente non ho idea di quanto sia grande quel segmento compilato, semplicemente facendo un punto. –

1

Penso che una combinazione di profili di lein2 e di percorsi src di cljsbuild possa fare il trucco. ad esempio, crea uno spazio dei nomi che carica semplicemente il tuo repl e lo esclude con un profilo eseguito per la compilazione finale (probabilmente potrebbe essere necessario creare uno spazio dei nomi fittizio in un'altra directory src-path).

7

Il tutorial modern-cljs descrive in realtà esattamente come risolvere questo here.

Spero che questo aiuti!