【问题标题】:Compiling ClojureScript from cljc files with lein使用 lein 从 cljc 文件编译 ClojureScript
【发布时间】:2015-08-11 21:57:48
【问题描述】:

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。

【问题讨论】:

  • 你能发布你的目录树吗?

标签: clojure leiningen clojurescript cljc


【解决方案1】:

是的,它有效。

尝试:

(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 compilelein cljsbuild once

请注意,我将 :cljsbuild 下的 :source-paths 更改为包含“src”::source-paths ["cljc" "src"]。除此之外,我添加了对 clojurescript 的显式依赖并将 cljsbuild 版本提升到 1.0.6

对了,你为什么有一个单独的cljc 目录?您可以让您的 cljc、clj 和 cljs 文件共享相同的目录结构。

【讨论】:

  • 请注意lein-doo 用于测试。
  • 哦,你是对的@sbensu,我会修复答案,谢谢!
  • 谢谢。是的,这行得通。回复:cljc 目录。好吧,它最初只是重命名我的 cljx 目录(所有 cljcs 都重命名为 cljxs)。但我在网上看到有人使用这种布局。
猜你喜欢
  • 2012-04-22
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 2019-11-07
  • 2021-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多