【发布时间】:2015-02-28 17:35:07
【问题描述】:
我正在制作一个部署在 Heroku 上的 Clojure/ClojureScript 网站。我正在使用 Leiningen 进行项目管理。
我想用 LESS 编写我的样式表。我需要构建过程将 LESS 文件编译成 CSS,然后缩小这些 CSS 文件;显然,我不希望生成的 CSS 文件受版本控制。
LESS 文件 --lein-less--> CSS 文件 --lein-asset-minifier--> 缩小的 CSS 文件
我尝试使用lein-less 和lein-asset-minifier Leiningen 插件来实现这一点。我的尝试包括以正确的顺序将leiningen.less 和minify-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"}}}}
}})
【问题讨论】:
-
挂钩调用顺序存在问题。现在,它是固定的。请看github.com/yogthos/lein-asset-minifier/pull/13
标签: clojure build less minify leiningen