【问题标题】:How to setup Leiningen/ClojureScript compiler to support user scripts?如何设置 Leiningen/ClojureScript 编译器以支持用户脚本?
【发布时间】:2018-02-03 17:48:51
【问题描述】:

用户脚本需要以metadata block 开头。如何设置 Leiningen 和/或 ClojureScript 编译器以插入预定义的元块,例如一个文本文件?

我尝试了以下方法:

; test
;; test 2
(comment test 3)

但它被剥夺了(可能是因为{:optimizations :advanced}?)。

请尝试很好地解释和描述您的答案,我是 Clojure 的菜鸟,对 Leiningen 几乎一无所知(我设法获得了一个简单的 ClojureScript 构建功能,但仅此而已 - 我想通过编写来开始学习 Clojure我可能实际使用的简单用户脚本)。

【问题讨论】:

  • 我的猜测是,这必须在 cljs/closure 中得到支持。如果这只是生成文件开头的“文本块”,我会在编译后执行cat metadata compiled.js > metadata.js 步骤。
  • 是的,我不认为它直接支持它。我不知道 Leiningen 以及它是否支持某种编译后挂钩(因为构建文件在 Clojure 中,这对我来说有点困难,因为我希望这个项目用于学习 Clojure)。我不想使用 bash 中的脚本调用 Leiningen 然后操作生成的文件之类的黑客解决方案 - 感觉不对,IMO 它应该由构建工具处理(至少这是我使用的其他构建工具中推荐的方式所以远)。

标签: build clojure clojurescript leiningen


【解决方案1】:

您可以使用:preamble 选项在输出文件前添加数据块。您可以看到编译器选项here(向下滚动一点...前导部分的链接不起作用,因为还有另一个具有前导 id 的 div)。

作为参考,这里是文档:

:preamble

将给定文件的内容添加到每个输出文件中。仅有的 对:none 以外的优化有效。

默认为空向量[]

:preamble ["license.js"]

【讨论】:

  • 这看起来很有希望,遗憾的是我不知道如何使用它 - github.com/emezeske/lein-cljsbuild/issues/472。
  • "license.js" 文件需要位于资源文件夹中。我忘记了 Leiningen 中的默认值("src/main/clojure" 或 "src/main/cljs",我认为),但您可以使用 Leiningen 中的 :resource-paths option 设置一个。我刚刚在我的一个项目中试用了它,它按预期工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 2014-05-12
  • 2018-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多