【发布时间】:2013-09-24 16:39:40
【问题描述】:
我有一个项目正在使用 Jasmine 来测试 JavaScript。我正在尝试切换到使用 ClojureScript 作为前端。我的project.clj 就像
(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}}]})
所以src/clojurescript 中的所有.cljs 文件都编译为main.js,spec/clojurescript 中的所有.cljs 都编译为mainSpec.js。
当我加载 Jasmine 页面时,两个 .js 文件都已加载,但测试未运行。
在控制台中我得到一个Error: Namespace "goog.debug.Error" already declared.
.js 文件的顶部都有相同的约 30k 行 google 关闭代码,这会导致错误。如果我从mainSpec.js 中删除此代码,它运行良好。
有没有办法告诉 cljsbuild 将此代码从规范文件中删除?
【问题讨论】:
-
Clojurescript compilation with Google Closure Modules 将优化构建的输出拆分为多个 javascript 文件。也许这就是您正在寻找的功能?