2015-04-04 102 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