cljsbuild - Multiple ClojureScript files on same page -
i have project using jasmine test javascript. trying switch using clojurescript front end. project.clj
like
(defproject myproject "0.1.0-snapshot" :dependencies [[org.clojure/clojure "1.5.1"] [org.clojure/clojurescript"0.0-1889"] [org.clojure/google-closure-library-third-party "0.0-2029"] [domina "1.0.0"] [hiccups "0.2.0"]] :plugins [[lein-cljsbuild "0.3.3"]] :cljsbuild { :builds [{ :source-paths ["src/clojurescript"] :compiler { :output-to "public/javascripts/main.js" :optimizations :whitespace :pretty-print true}} { :source-paths ["spec/clojurescript"] :compiler { :output-to "spec/javascripts/mainspec.js" :optimizations :whitespace :pretty-print true}}]})
so .cljs
files in src/clojurescript
compiled main.js
, .cljs
in spec/clojurescript
compiled mainspec.js
. when load jasmine page, both .js
files loaded tests aren't run. in console error: namespace "goog.debug.error" declared.
both .js
files have same ~30k lines of google closure code @ top causing error. if delete code mainspec.js
runs fine. there way tell cljsbuild leave code off spec file?
as jared314 , zubair pointed out, problem you're encountering caused trying include 2 clojurescript compilation outputs in same page. clojurescript/google closure expect 'whole-world' compile, is, compiler expects of code entire page passed compiler can optimise it, rename functions, , spit out single javascript file. it's not designed produce multiple output files work together.
the 'correct' way solve problem produce 2 outputs used in isolation: main.js file running application, , spec.js file include code in main plus code in spec testing. can setting project this:
:cljsbuild { :builds [{ :source-paths ["src/clojurescript"] :compiler {:output-to "public/javascripts/main.js"}} { :source-paths ["src/clojurescript" "spec/clojurescript"] :compiler {:output-to "spec/javascripts/spec.js"}}]})
your jasmine page should refer spec.js not main.js - referring both cause of error.
Comments
Post a Comment