我正在制作一个我在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"}}}}
}})
答案 0 :(得分:2)
我做了一些研究,因为这是一个有趣的问题。所以我环顾四周,找不到如何配置的信息。所以我继续搜索,我找到了一个插件来完成这项任务。
https://github.com/kumarshantanu/lein-cascade
github页面上的自述文件应足以解决此任务。