【问题标题】:Leiningen 2-steps build: how to combine lein-less and lein-asset-minifierLeiningen 两步构建:如何结合 lein-less 和 lein-asset-minifier
【发布时间】:2015-02-28 17:35:07
【问题描述】:

我正在制作一个部署在 Heroku 上的 Clojure/ClojureScript 网站。我正在使用 Leiningen 进行项目管理。

我想用 LESS 编写我的样式表。我需要构建过程将 LESS 文件编译成 CSS,然后缩小这些 CSS 文件;显然,我不希望生成的 CSS 文件受版本控制。

LESS 文件 --lein-less--> CSS 文件 --lein-asset-minifier--> 缩小的 CSS 文件

我尝试使用lein-lesslein-asset-minifier Leiningen 插件来实现这一点。我的尝试包括以正确的顺序将leiningen.lessminify-assets.plugin/hooks 声明为:uberjar 任务的钩子(参见下面的代码)。但是运行lein uberjar 失败并出现以下错误:

Uberjar aborting because jar failed: resources/public/css/site.css (No such file or directory)

所以看起来构建步骤的顺序没有被强制执行。

是否可以使用这些 Leiningen 插件来实现这个多步骤构建?如果没有,人们是怎么做的?


代码

这是我的project.clj 的相关部分:

(defproject sncf-cljs "0.1.0-SNAPSHOT"
            ;; ...
            :min-lein-version "2.5.0"
            :source-paths ["src/clj" "src/cljs"]
            :dependencies [
                       ;; ...
                       ]

            :plugins [
                      [lein-cljsbuild "1.0.4"]
                      [lein-environ "1.0.0"]
                      [lein-ring "0.9.1"]

                      [lein-asset-minifier "0.2.2"]
                      [lein-less "1.7.2"]]


            :less {:source-paths ["src/less"]
                   :target-path "resources/public/css"}



            :uberjar-name "sncf-cljs.jar"

            :minify-assets {:assets
                            {"resources/public/css/site.min.css" "resources/public/css/site.css"}}

            :cljsbuild { 
                        ;; ...
                        }

            :profiles {                                 
                       ;; ...

                       :uberjar {:hooks [leiningen.less
                                         leiningen.cljsbuild
                                         minify-assets.plugin/hooks]

                                 :env {:production true}
                                 :aot :all
                                 :omit-source true
                                 :cljsbuild {:jar true
                                             :builds {:app
                                                      {:source-paths ["env/prod/cljs"]
                                                       :compiler
                                                                     {:optimizations :advanced
                                                                      :pretty-print false}}}}}

                       :production {:ring {:open-browser? false
                                           :stacktraces?  false
                                           :auto-reload?  false}
                                    :cljsbuild {:builds {:app {:compiler {:main "sncf-cljs.prod"}}}}
                                }})

【问题讨论】:

标签: clojure build less minify leiningen


【解决方案1】:

我做了一些研究,因为这是一个有趣的问题。所以我环顾四周,找不到如何配置它的信息。于是我继续搜索,找到了这个任务的插件。

https://github.com/kumarshantanu/lein-cascade

github页面上的readme应该足以解决这个任务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多