使用 lein 从 cljc 文件编译 ClojureScript
Compiling ClojureScript from cljc files with lein
cljc/lein/clojurescript 可以工作了吗?
我以前使用的是 cljx,并且能够使用 cljx 插件编译同一个项目,以便 lein 启动 cljsbuild 任务。
现在我要切换到 cljc,我想将我的 cljc 文件编译成 Java 和 javascript 以便在浏览器中使用。
这是我当前的 project.clj 文件
(defproject com.mysite/myproj "0.3.2-SNAPSHOT"
:description ""
:url ""
:license {:name "Gnu Lesser Public License"
:url "https://www.gnu.org/licenses/lgpl.html"}
:dependencies [[org.clojure/clojure "1.7.0"]]
:plugins [[lein-cljsbuild "1.0.3"]
[lein-localrepo "0.4.0"] ]
:source-paths ["cljc" "src" ]
:cljsbuild {:builds [{
:source-paths ["cljc" ]
:compiler {
:output-to "browser-based/js/main.js"
:optimizations :whitespace
:pretty-print true }
} ]}
:hooks [leiningen.cljsbuild]
:aot [myproj.core]
:main myproj.core)
我不记得我从哪里复制了其中的一些内容,但我认为 leiningen.cljsbuild 挂钩是自动触发 cljs 构建过程的。然而,在删除 cljx 插件并移至 cljc 之后,这成功编译了我程序的 Java 版本,但似乎没有生成任何 javascript.
是的,它有效。
试试:
(defproject com.mysite/myproj "0.3.2-SNAPSHOT"
:description ""
:url ""
:license {:name "Gnu Lesser Public License"
:url "https://www.gnu.org/licenses/lgpl.html"}
:dependencies [[org.clojure/clojure "1.7.0"]
[org.clojure/clojurescript "1.7.28"]
:plugins [[lein-cljsbuild "1.0.6"]
[lein-localrepo "0.4.0"]]
:source-paths ["cljc" "src"]
:cljsbuild {:builds [{
:source-paths ["cljc" "src"]
:compiler {:output-to "browser-based/js/main.js"
:optimizations :whitespace
:pretty-print true}}]}
:hooks [leiningen.cljsbuild])
然后 运行:lein compile
或 lein cljsbuild once
请注意,我将 :cljsbuild 下的 :source-paths
更改为包含 "src"::source-paths ["cljc" "src"]
。除此之外,我添加了对 clojurescript 的显式依赖,并将 cljsbuild 版本提高到 1.0.6
顺便说一句,为什么你有一个单独的 cljc
目录?您可以让 cljc、clj 和 cljs 文件共享相同的目录结构。
cljc/lein/clojurescript 可以工作了吗?
我以前使用的是 cljx,并且能够使用 cljx 插件编译同一个项目,以便 lein 启动 cljsbuild 任务。
现在我要切换到 cljc,我想将我的 cljc 文件编译成 Java 和 javascript 以便在浏览器中使用。
这是我当前的 project.clj 文件
(defproject com.mysite/myproj "0.3.2-SNAPSHOT"
:description ""
:url ""
:license {:name "Gnu Lesser Public License"
:url "https://www.gnu.org/licenses/lgpl.html"}
:dependencies [[org.clojure/clojure "1.7.0"]]
:plugins [[lein-cljsbuild "1.0.3"]
[lein-localrepo "0.4.0"] ]
:source-paths ["cljc" "src" ]
:cljsbuild {:builds [{
:source-paths ["cljc" ]
:compiler {
:output-to "browser-based/js/main.js"
:optimizations :whitespace
:pretty-print true }
} ]}
:hooks [leiningen.cljsbuild]
:aot [myproj.core]
:main myproj.core)
我不记得我从哪里复制了其中的一些内容,但我认为 leiningen.cljsbuild 挂钩是自动触发 cljs 构建过程的。然而,在删除 cljx 插件并移至 cljc 之后,这成功编译了我程序的 Java 版本,但似乎没有生成任何 javascript.
是的,它有效。
试试:
(defproject com.mysite/myproj "0.3.2-SNAPSHOT"
:description ""
:url ""
:license {:name "Gnu Lesser Public License"
:url "https://www.gnu.org/licenses/lgpl.html"}
:dependencies [[org.clojure/clojure "1.7.0"]
[org.clojure/clojurescript "1.7.28"]
:plugins [[lein-cljsbuild "1.0.6"]
[lein-localrepo "0.4.0"]]
:source-paths ["cljc" "src"]
:cljsbuild {:builds [{
:source-paths ["cljc" "src"]
:compiler {:output-to "browser-based/js/main.js"
:optimizations :whitespace
:pretty-print true}}]}
:hooks [leiningen.cljsbuild])
然后 运行:lein compile
或 lein cljsbuild once
请注意,我将 :cljsbuild 下的 :source-paths
更改为包含 "src"::source-paths ["cljc" "src"]
。除此之外,我添加了对 clojurescript 的显式依赖,并将 cljsbuild 版本提高到 1.0.6
顺便说一句,为什么你有一个单独的 cljc
目录?您可以让 cljc、clj 和 cljs 文件共享相同的目录结构。