5

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

4

2 回答 2

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"}}]} 
于 2013-04-11T15:30:16.273 回答
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 dev或者lein cljsbuild auto dev将编译 site.js,然后看到它的依赖项没有被编译,然后去编译它们,连同它们的sourcemaps。如果 site.js 已编译并且是最新的,则 cljsbuild 会认为没有什么可做并在生成源映射等之前终止。

我还强烈推荐lein figwheel用于 cljs 开发,并记得启用 sourcemaps。

于 2015-02-01T11:10:28.510 回答