2015-04-04 107 views
1

編輯:如果有人試圖爲一個項目構建獨立的cljs/js文件:它的工作方式與下面描述的方式完全相同。你只需要確保cljs-directory包含所需的文件 - 我的錯誤是無意中將另一個(未使用的)cljs文件的副本留在一個目錄中;雖然沒有被引用,但會被編譯成想要的文件。將多個cljs文件編譯爲獨立的js文件

我使用具有多個構建的cljsbuild在同一頁上生成兩個不同的cljs/js-文件。這些文件之間沒有依賴關係,它們使用不同的名稱空間。以高級模式編譯構建兩個js文件,其中一個js文件包含整個其他文件 - 這樣一個文件就不再需要了。

有沒有辦法生成兩個完全獨立的js文件,而無需設置兩個不同的項目?我project.clj的

部分:

:cljsbuild {:builds {:app1 {:source-paths ["src/cljs-app1"] 
          :compiler {:output-to  "resources/public/js/app1.js" 
            :output-dir "resources/public/js/out-app1" 
            :asset-path "/js/out-app1" 
            :optimizations :none 
            :pretty-print true}} 
        :app2 {:source-paths ["src/cljs-app2"] 
          :compiler {:output-to  "resources/public/js/app2.js" 
            :output-dir "resources/public/js/out-app2" 
            :asset-path "/js/out-app2" 
            :optimizations :none 
            :pretty-print true}}}} 

:profiles {:dev {:cljsbuild {:builds {:app1 {:compiler {:source-map true}} 
            :app2 {:compiler {:source-map true}}}}} 

     :uberjar {:hooks [leiningen.cljsbuild minify-assets.plugin/hooks] 
        :env {:production true} 
        :aot :all 
        :omit-source true 
        :cljsbuild {:jar true 
           :builds {:app1 {:compiler 
               {:optimizations :advanced 
               :pretty-print false}} 
             :app2 {:compiler 
               {:optimizations :advanced 
               :pretty-print false}}}}} 
     :production {:cljsbuild {}} 
     } 
+0

這可能有助於http://swannodette.github.io/2015/04/07/in-stillness-movement/和HTTP:// swannodette .github.io/2015/02/23 /你好-谷歌閉合模塊/ – sbensu 2015-04-08 14:28:19

回答

0

目前編譯每個的建立時使用的源路徑的組合列表,這可能導致令人驚訝的夾雜物/泄漏在生成的js文件中。一個解決辦法是爲每個版本cljsbuild單獨運行:

lein cljsbuild once app1 
lein cljsbuild once app2