如何将单个文件输出到cljsbuild的指定目录

时间:2013-04-11 02:41:47

标签: clojurescript

使用cljsbuild,我可以将所有.cljs文件编译为一个文件。但是,我希望能够选择一个输出目录,并将每个.cljs文件编译成自己的.js文件。如何指定?

2 个答案:

答案 0 :(得分:3)

您可以使用“多个构建配置”:cljsbuild接受:builds键的配置向量,其中每个元素定义用于编译单独的.js文件的规则(更多信息可以在lein-cljsbuild README中找到)。简单的例子:

:cljsbuild 
{:builds 
 [;; Config for first .js file
  {:source-paths ["dir-with-cljs-for-first-js"]
   :compiler {:output-to "dir-for-js/first.js"}
  ;; Config for second .js file
  {:source-paths ["dir-with-cljs-for-second-js"]
   :compiler {:output-to "dir-for-js/second.js"}}]} 

答案 1 :(得分:0)

您正在寻找:output-dir选项。我的cljsbuild看起来像这样:

:cljsbuild
  {:builds
   [{:id "dev"
     :source-paths ["src/cljs"]
     :compiler {:output-to  "resources/public/js/site.js"
                :output-dir "resources/public/js/out"
                :source-map true :optimizations :none }}
    {:id "main"
     :source-paths ["src/cljs"]
     :compiler {:pretty-print false
                :output-to "resources/public/js/site.js"
                :source-map "resources/public/js/site.js.map"
                :optimizations :advanced}}]}

使用此配置,没有site.js已经编译/最新lein cljsbuild once devlein cljsbuild auto dev将编译site.js,然后查看它' s依赖项没有被编译,并与它们的sourcemaps一起编译它们。如果site.js被编译并且是最新的,cljsbuild会认为在生成源地图等之前没有什么可以完成和终止。

我还强烈推荐lein figwheel进行cljs开发,并记得启用源映射。