У меня есть проект, который использует Jasmine для проверки JavaScript. Я пытаюсь переключиться на использование ClojureScript для переднего конца. Мой project.clj
подобенНесколько файлов ClojureScript на одной странице
(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}}]})
Таким образом, все .cljs
файлы в src/clojurescript
компилируются в main.js
и все в .cljs
в spec/clojurescript
компилируются в mainSpec.js
. Когда я загружаю страницу Жасмин, загружаются файлы .js
, но тесты не запускаются. В консоли я получаю Error: Namespace "goog.debug.Error" already declared.
Оба файла .js
имеют те же самые ~ 30k строки кода закрытия google вверху, что вызывает ошибку. Если я удалю этот код с mainSpec.js
, он работает нормально. Есть ли способ сказать cljsbuild оставить этот код вне спецификационного файла?
[Компиляция Clojurescript с модулями закрытия Google] (https://swannodette.github.io/2015/02/23/hello-google-closure-modules/) разбивает выходные данные оптимизированной сборки на несколько файлов javascript. Возможно, это функциональность, которую вы ищете? –