簡體   English   中英

如何避免cljsbuild項目中的重復?

[英]How do I avoid duplication in a cljsbuild project?

我的project.clj:cljsbuild部分有很多重復:

:cljsbuild {
  :builds {:dev {:source-paths ["src-cljs"]
                 :compiler {:output-dir "resources/public/js"
                            :output-to "resources/public/js/main.js"
                            :optimizations :whitespace
                            :pretty-print true
                            :source-map "resources/public/js/main.map"
                            :language-in :ecmascript5
                            :foreign-libs [{:file "third-party/mutation-summary/mutation-summary.js"
                                            :provides ["MutationSummary"]}]}}
           :production {:source-paths ["src-cljs"]
                        :compiler {:output-to "resources/public/js/main-min.js"
                                   :optimizations :advanced
                                   :pretty-print false
                                   :language-in :ecmascript5
                                   :foreign-libs [{:file "third-party/mutation-summary/mutation-summary.js"
                                                   :provides ["MutationSummary"]}]}}
           :test {:source-paths ["src-cljs" "test-cljs"]
                  :compiler {:output-to "resources/private/js/unit-test.js"
                             :optimizations :whitespace
                             :pretty-print true
                             :language-in :ecmascript5
                             :preamble ["react/react.min.js"]
                             :externs ["react/externs/react.js"]
                             :foreign-libs [{:file "third-party/mutation-summary/mutation-summary.js"
                                             :provides ["MutationSummary"]}]}}}
  :test-commands {"unit-tests" ["slimerjs" :runner
                                "resources/private/js/unit-test.js"]}}

我確信必須能夠使用配置文件來消除這種重復,但我的Leiningen fu缺乏。

一個不那么漂亮,但可行的解決方案是增加一個defdefn你上面defproject保存您正在重用的標准參數,例如:(不spellchecked也不發揮作用的例子)

(def defaults
   "Returns default compiler options"
   {:language-in :ecmascript5
    :foreign-libs [{:file "third-party/mutation-summary/mutation-summary.js"
                    :provides ["MutationSummary"]}]})

然后merge地圖與自定義值merge

 :builds {:dev {:source-paths ["src-cljs"]
                :compiler     (merge defaults {:pretty-print true})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM