ClojureScript Leiningen 编译成单个 .js 文件?

ClojureScript Leiningen compile to a single .js file?

是否可以将 Leiningen 配置为将所有已编译的 JS 捆绑到一个文件中?目前它输出了一百多个文件,这在生产中会很慢。

顺便说一下,我正在使用 Chestnut boilerplate。文档说:

Q: I just want to compile ClojureScript to fully optimized JavaScript, so I can use it in a static HTML site.

A: Invoke cljsbuild with the uberjar profile active, like this: lein with-profile -dev,+uberjar cljsbuild once, then look for resources/public/js/app.js.

我试过了,但是结果app.js仍然只是从其他文件加载依赖项,它不包含整个应用程序。

正如评论中指出的那样:确保使用以下其中一项 :optimizations:

  • :whitespace
  • :simple
  • :advanced

您可以在 ClojureScript wiki 中找到更多信息: https://github.com/clojure/clojurescript/wiki/Compiler-Options#optimizations

似乎 lein with-profile -dev,+uberjar cljsbuild once 确实生成了一个 .js 包。 :uberjar 配置文件已在以下位置设置了 :optimizations :advanced 选项:

:uberjar {:source-paths ["env/prod/clj"]
                       :hooks [leiningen.cljsbuild]
                       :env {:production true}
                       :omit-source true
                       :aot :all
                       :main calc-pack.server
                       :cljsbuild {:builds {:app
                                            {:source-paths ["env/prod/cljs"]
                                             :compiler
                                             {:optimizations :advanced
                                              :pretty-print false}}}}}

显然,由于我自己的代码中的错误,它无法正常工作。