Clojure と ClojureScript の両方で動作するライブラリに取り組んでいます。
ライブラリの project.clj は次のとおりです。
(defproject libtest "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.4.0"]]
:plugins [[lein-cljsbuild "0.3.0"]]
:cljsbuild
{:crossovers [libtest],
:crossover-jar true
:jar true
:builds
[{:source-paths ["src/libtest"], :crossover-path "src/libtest"}]})
別のプロジェクトに依存関係として含めています。プロジェクトの ClojureScript 側から動作させるには、project.clj の cljsbuild キーの下にクロスオーバーとして正確な名前空間を追加する必要がありました。
(defproject some-other-project
...
:dependencies [[org.clojure/clojure "1.5.0"]
[libtest "0.1.0-SNAPSHOT"]]
:cljsbuild {
:builds [{
...
:crossovers [libtest.core]
...
私の質問は、これは必要ですか?クラスパス上にある場合、使用する名前空間を具体的に伝える必要があるのはなぜですか? 数十の名前空間を使用する必要があり、そのうちのいくつかは他の名前空間などを参照する必要がある場合、これはうまくスケーリングできません。