2017-08-25 63 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