【问题标题】:ClojureScript Leiningen compile to a single .js file?ClojureScript Leiningen 编译成单个 .js 文件?
【发布时间】:2015-08-22 20:57:13
【问题描述】:

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

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

问:我只想将 ClojureScript 编译为完全优化的 JavaScript,这样我就可以在静态 HTML 站点中使用它。

A:在 uberjar 配置文件处于活动状态的情况下调用 cljsbuild,如下所示:lein with-profile -dev,+uberjar cljsbuild once,然后查找 resources/public/js/app.js。

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

【问题讨论】:

  • 您的project.clj 看起来如何?您可能正在使用:optimization :none。 github.com/clojure/clojurescript/wiki/…
  • 使用 optimization :advanced 将另一个 [:cljsbuilds :builds ...] 添加到您的地图中

标签: javascript build clojure leiningen clojurescript


【解决方案1】:

正如 cmets 中所指出的:确保使用以下 :optimizations 之一:

  • :whitespace
  • :simple
  • :advanced

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

【讨论】:

    【解决方案2】:

    似乎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}}}}}
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 2012-07-19
      • 1970-01-01
      • 2018-02-03
      • 2019-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多