为什么要将ClojureScript源目录放在:source path中?

为什么要将ClojureScript源目录放在:source path中?,clojure,leiningen,clojurescript,Clojure,Leiningen,Clojurescript,在设置Clojure+ClojureScript项目时,我经常看到人们将他们的Clojure源目录和ClojureScript源目录放在他们的项目上。clj的顶级:源路径。例如: 我可能不太理解Leiningen,但这不就是把那些目录放在类路径上吗?为什么要在类路径上使用ClojureScript?我认为用cljsbuild指向它并让它编译就足够了。将ClojureScript源代码树添加到:source path是确保Leiningen将其包含在JAR和überjar中的最简单方法之一。但是,

在设置Clojure+ClojureScript项目时,我经常看到人们将他们的Clojure源目录和ClojureScript源目录放在他们的
项目上。clj
的顶级
:源路径
。例如:


我可能不太理解Leiningen,但这不就是把那些目录放在类路径上吗?为什么要在类路径上使用ClojureScript?我认为用
cljsbuild
指向它并让它编译就足够了。

将ClojureScript源代码树添加到
:source path
是确保Leiningen将其包含在JAR和überjar中的最简单方法之一。但是,它并不适合所有项目,因此ClojureScript库使用各种不同的安排

  • 如果您正在实现一个纯ClojureScript库,您可能会发现使用
    :源路径
    方法很方便,或者您可以将
    .cljs
    文件放在默认的
    “src”
    目录中
  • 如果您使用的是
    cljx
    ,您会希望在jar中包含它生成的
    .clj
    .cljs
    文件,因此类似(链接到1.1.0版)的内容可能会更适合您
  • 如果您不需要在JAR中包含ClojureScript源文件,您可以仅向lein cljsbuild提及
    .cljs
    文件

IIRC,它使clj和cljs fns之间的REPL交互更容易。。。因此,最终演变为cljx,我们为两个目标编译了一些相同的FN(和ns)。你知道它是如何让事情变得容易的吗?Clojure实际上不会加载任何
.cljs
文件,对吗?我很确定它至少会使ns在repl上可用,因为大多数cljs也是有效的clj。。。我想这也可能会缓解奥斯汀的一些问题,因为我有atm,所以我现在要在当前项目的一个分支上尝试:)尽管如此,我很确定cljx的目的是完全避免这个问题。不,
.cljs
类路径上的文件不会由Clojure加载,即使它们包含的代码恰好是有效的Clojure(通常情况下并非如此)。
.cljx
文件也不会由Clojure本身加载,或者由ClojureScript加载;Leiningen的
cljx
插件输出
.clj
.cljs
文件,然后Clojure和ClojureScript编译器分别使用这些预处理文件。
:source-paths ["src/clj" "src/cljs"]