Utilizzando cljsbuild, posso compilare tutti i miei file .cljs in un unico file. Tuttavia, desidero essere in grado di selezionare una directory per l'output e di compilare ciascun file .cljs nel proprio file .js. Come può essere specificato?come esportare singoli file in una directory specificata per cljsbuild
risposta
È possibile utilizzare "configurazioni di più build": cljsbuild accetta un vettore di configurazioni per la chiave :builds
, ciascun elemento di cui definisce le regole per la compilazione del file .js separato (ulteriori informazioni potrebbero essere trovate in lein-cljsbuild README). Semplice esempio:
:cljsbuild
{:builds
[;; Config for first .js file
{:source-paths ["dir-with-cljs-for-first-js"]
:compiler {:output-to "dir-for-js/first.js"}
;; Config for second .js file
{:source-paths ["dir-with-cljs-for-second-js"]
:compiler {:output-to "dir-for-js/second.js"}}]}
Stai cercando l'opzione output-dir. Il mio cljsbuild assomiglia a questo:
:cljsbuild
{:builds
[{:id "dev"
:source-paths ["src/cljs"]
:compiler {:output-to "resources/public/js/site.js"
:output-dir "resources/public/js/out"
:source-map true :optimizations :none }}
{:id "main"
:source-paths ["src/cljs"]
:compiler {:pretty-print false
:output-to "resources/public/js/site.js"
:source-map "resources/public/js/site.js.map"
:optimizations :advanced}}]}
Con questa configurazione, e senza site.js già compilati/aggiornati, lein cljsbuild once dev
o lein cljsbuild auto dev
compilerà site.js, poi vedere è dipendenze non sono compilati e vanno compilarli insieme al loro sourcemaps. Se site.js è compilato e aggiornato, cljsbuild penserà che non c'è nulla da fare e terminare prima di generare mappe di origine, ecc.
Raccomando anche lo lein figwheel per lo sviluppo di cljs, e ricordarsi di abilitare le fonti.
come ottenere un file .js separato per ogni file .clj in "dir-with-cljs-for-first-js"? – zcaudate
In questo esempio verranno compilati due file .js: uno proveniente da sorgenti .cljs in "dir-with-cljs-for-first-js", in secondo luogo - dalle origini in "dir-with-cljs-for-second-js" . Non c'è modo di creare il file .js per ogni file nella directory ("dir-with-cljs-per-first-js"), ma è possibile inserire ogni .cljs in una sottodirectory separata (ad esempio, "dir -with-cljs-per-first-js/1 "," dir-con-cljs-per-first-js/2 ", ecc.) e specifica manualmente una configurazione di compilazione per ciascuna sottodirectory. – gsnewmark