[我正在考虑将项目从boot移至Gradle,而clojurephant希望利用Gradle生态系统的更多优势。该项目构建了一个大型uberjar,其中包含一个带有Ring和Jetty的Clojure项目,而后者又附带了一个带有重新框架构建的ClojureScript应用程序。
在启动时,我基本上只需要添加boot-cljs
(boot-cljs/cljs :optimizations :advanced)
对于我的构建任务,它也调用(pom)
,(aot)
和(uber)
(所有标准启动任务),并且所有工作都顺利进行。
[使用Clojurephant,我发现Clojure和ClojureScript部分最终位于不同的子目录中。特别是在build
clojure/main
clojurescript/main
resources/main
(基本上是我的resources
项目文件夹的副本)]让我感到困惑的是,这些路径没有以我可以看到的方式转换为Gradle使用shadow plugin构建的Uberjar的结构>
摘录自我的build.gradle
:
plugins { id 'dev.clojurephant.clojure' version '0.5.0' id 'dev.clojurephant.clojurescript' version '0.5.0' id 'application' id 'com.github.johnrengelman.shadow' version '5.0.0' id 'maven-publish' id 'distribution' id 'com.meiuwa.gradle.sass' version '2.0.0' } // ... clojure { builds { main { aotAll() } } } // ... clojurescript { builds { all { compiler { outputTo = 'public/app.js' outputDir = 'public/js/out' main = 'com.example.mycljsstuff' assetPath = 'js/out' } } main { compiler { optimizations = 'advanced' sourceMap = 'public/app.js.map' } } dev { compiler { optimizations = 'none' preloads = ['com.example.mycljsstuff'] } } } }
编辑:忘记提及启动时,我将init函数配置为开始将CLJS代码加载到名为
app.cljs.edn
的文件中。使用Clojurephant,我只能找到一种设置主命名空间而不是函数的方法。
我的问题是,最终,我如何配置ClojureScript构建,以便最终从Uberjar交付时起作用?
Clojure的事情似乎起作用。 Ring和Jetty运行并愉快地交付了第一个静态网页。但是找不到所有CLJS / JS东西。
我很高兴能收到一些指向其他项目的指导,我可以在其中学习,编写文档或教程。我没有发现太多,然后迷失了对Clojurephant本身代码的理解。
我正在考虑将一个项目从启动迁移到Gradle,而clojurephant希望利用Gradle生态系统的更多功能。该项目构建了一个大型uberjar,其中包含一个带有Ring的Clojure项目...
[一年前,我能够将CLJ和CLJS(后端/前端)组合项目拆分为2个独立的项目:用于后端的纯Clojure和用于前端的纯ClojureScript。这解决了我们遇到的许多问题,我再也不会尝试将两个代码库再次保留在同一项目中。