2015-07-20 31 views
2

使用lein進行clojure,試圖使用clojurescript插件。 按照所有readme.md安裝步驟,project.clj有「'cljsbuild'不是任務」

: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] 

我似乎無法得到雷音識別插件,我不知道什麼是正的小鬼。

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> 
+1

請問你能顯示你正在執行的命令和你得到的完整輸出嗎?如果您顯示整個project.clj – nberger

+2

'lein help'將顯示可用任務,那麼也會有所幫助。 「cljsbuild」出現在那裏嗎?這可能與你的環境有關,但我不會在窗口中使用leiningen,所以我不能提供太多幫助。你可以查看leiningen的安裝說明,看看你是否錯過了一些東西:https://github.com/technomancy/leiningen#windows – nberger

回答

2

我認爲問題是,你的project.clj文件缺少一個:cljsbuild節/鍵定義編譯clojurescript源文件所需的各種參數。

查看Modern Clojurescript Tutorial瞭解更多詳情,或者查看我的clojurescript file upload example以瞭解如何定義cljsbuild目標。

4

如果您使用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}}]}) 

正如你看到的,你需要添加雷音-cljsbuild插件與構建信息。有關詳細說明,請參閱http://www.mase.io/code/clojure/node/2015/01/24/getting-started-with-clojurecript-and-node/

如果您不想更改,請運行./scripts/build

+0

也注意到./scripts/watch會在自動監視模式下的編譯器下觸發Clojure代碼。 – shan