“'cljsbuild'不是一项任务”

时间:2015-07-20 02:31:49

标签: clojure clojurescript cljsbuild

使用lein for clojure,尝试使用clojurescript插件。 按照所有readme.md安装步骤,project.clj已经

  :dependencies [[org.clojure/clojure "1.7.0"]
                [org.clojure/clojurescript "0.0-3126"]]
  ;; lein-cljsbuild plugin to build a CLJS project  
  :plugins [[lein-cljsbuild "1.0.6"]]  
  :hooks [leiningen.cljsbuild]

我似乎无法让lein认出插件,我不确定是什么东西。

C:\Functional_Languages\Clojure\clojurescript_master\!work\modern-cljs>lein cljsbuild once
'cljsbuild' is not a task. See 'lein help'.
C:\Functional_Languages\Clojure\clojurescript_master\!work\modern-cljs>lein compile
C:\Functional_Languages\Clojure\clojurescript_master\!work\modern-cljs>lein cljsbuild once
'cljsbuild' is not a task. See 'lein help'.
C:\Functional_Languages\Clojure\clojurescript_master\!work\modern-cljs>lein -v
Leiningen 2.5.1 on Java 1.8.0_51 Java HotSpot(TM) 64-Bit Server VM
C:\Functional_Languages\Clojure\clojurescript_master\!work\modern-cljs>

2 个答案:

答案 0 :(得分:5)

如果使用lein new mies ...获取项目文件并执行命令,则应修改自动生成的project.clj文件。 这是一个显示更改的示例:

在:

(defproject simple "0.1.0-SNAPSHOT"
  :description "FIXME: write this!"
  :url "http://example.com/FIXME"
  :dependencies [[org.clojure/clojure "1.7.0"]
                 [org.clojure/clojurescript "1.7.122" :classifier "aot"
                  :exclusion [org.clojure/data.json]]
                 [org.clojure/data.json "0.2.6" :classifier "aot"]]
  :jvm-opts ^:replace ["-Xmx1g" "-server"]
  :plugins [[lein-npm "0.6.1"]]
  :npm {:dependencies [[source-map-support "0.3.2"]]}
  :source-paths ["src" "target/classes"]
  :clean-targets ["out" "release"]
  :target-path "target")

之后

(defproject simple "0.1.0-SNAPSHOT"
  :description "FIXME: write this!"
  :url "http://example.com/FIXME"
  :dependencies [[org.clojure/clojure "1.7.0"]
                 [org.clojure/clojurescript "1.7.122" :classifier "aot"
                  :exclusion [org.clojure/data.json]]
                 [org.clojure/data.json "0.2.6" :classifier "aot"]]

  :node-dependencies [[source-map-support "0.2.8"]]

  :jvm-opts ^:replace ["-Xmx1g" "-server"]

  :plugins [[lein-npm "0.6.1"] 
            [lein-cljsbuild "1.0.4"]]

  :npm {:dependencies [[source-map-support "0.3.2"]]}
  :source-paths ["src" "target/classes"]
  :clean-targets ["out" "release"]
  :target-path "target"

  :cljsbuild {
      :builds [{:id "simple"
                :source-paths ["src"]
                :compiler {
                    :main simple.core
                    :output-to "out/simple.js"
                    :output-dir "out"
                    :optimizations :none
                    :target :nodejs
                    :cache-analysis true
                    :source-map true}}]})

如您所见,您需要添加带有构建信息的lein-cljsbuild插件。有关进一步说明,请参阅http://www.mase.io/code/clojure/node/2015/01/24/getting-started-with-clojurecript-and-node/

如果您不想进行更改,只需运行./scripts/build即可。

答案 1 :(得分:3)

我认为问题是你的project.clj文件缺少:cljsbuild节/键,它定义了编译clojurescript源文件所需的各种参数。

查看Modern Clojurescript Tutorial了解更多详情,或者查看我的clojurescript file upload example,了解如何定义:cljsbuild目标。