2017-08-25 70 views
2

用戶腳本需要以metadata block開頭。如何設置Leiningen和/或ClojureScript編譯器以從例如插入預定義的元區塊。一個文本文件?如何設置Leiningen/ClojureScript編譯器來支持用戶腳本?

我曾嘗試以下幾點:(?可能是因爲{:optimizations :advanced}

; test 
;; test 2 
(comment test 3) 

,但它得到了剝離。

請嘗試解釋和描述你的答案,我是Clojure的總noob,對於Leiningen幾乎一無所知(我設法獲得了一個簡單的ClojureScript構建功能,但就是這樣 - 我想開始學習Clojure,編寫我可能實際使用的簡單用戶腳本)。

+0

我猜這裏是,這必須在cljs /關閉的支持。如果這只是生成文件開頭的「文本塊」,那麼在編譯之後,我只需執行一個'cat元數據compiled.js> metadata.js'步驟。 – cfrick

+0

是的,我不認爲它直接支持它。我不知道Leiningen和它是否支持某種編譯後鉤子(也因爲構建文件在Clojure中,這對我來說有點困難,因爲我希望此項目用於學習Clojure)。我不希望像hashy這樣的解決方案,在bash中調用Leiningen,然後操作生成的文件 - 感覺不對,IMO應該用構建工具來處理它(至少這是我在其他構建工具中推薦的方法)遠)。 – monnef

回答

3

您可以使用:preamble選項在輸出文件的前面添加一個數據塊。您可以看到編譯器選項here(向下滾動一點...前導段的鏈接不起作用,因爲還有另一個具有前導ID的div)。

僅供參考,這裏的文檔:

:preamble

預先將指定的文件到每個輸出文件中的內容。只有 與:none以外的優化有效。

默認爲空載體[]

:preamble ["license.js"] 
+0

這看起來很有希望,可悲的是我不知道如何使用它 - https://github.com/emezeske/lein-cljsbuild/issues/472。 – monnef

+1

''license.js''文件需要存在資源文件夾中。我忘記了Leiningen('src/main/clojure「或''src/main/cljs」',我想)的默認設置,但是可以使用[':resource-paths'選項]設置一個https://github.com/technomancy/leiningen/blob/master/sample.project.clj#L303)在Leiningen。我剛剛在我的一個項目上嘗試過,它按預期工作。 – jszakmeister