昨天聊天的时候注意到的, 过去几个月突然发现有新的可能性:
- Lein 方案 https://github.com/emezeske/lein-cljsbuild
- Boot 方案 https://github.com/boot-clj/boot-cljs
- Lumo 方案 https://anmonteiro.com/2017/02/compiling-clojurescript-projects-without-the-jvm/
- shadow-cljs 方案 https://github.com/thheller/shadow-cljs/wiki/ClojureScript-for-JS-Devs
- cljs/tool 方案 https://github.com/cljs/tool
前两种只是更换了建构工具, 本质上还是用 JVM 运行 compiler. 此外还有个手工运行编译器的方案. Lumo 的情况是采用 self-hosted cljs 的方案, 直接在 Node.js 环境运行编译器. 不过速度并不快. shadow-cljs 实际上是基于 node-jre 的方案, 用 npm 模块管理的 JVM. 性能居然很快… 不知道做了怎样的优化.
前两个方案都有对应的开发时代码热替换方案 lein-figwheel, boot-reload, 在 shadow-cljs 里似乎有自带的, 不过考虑到打包可以直接用 Webpack 的热替换方案, 虽然有点勉强但也还可以用. Lumo 目前没有热替换方案, 而且可能有 bug.
这里边我接触最少的是 cljs/tool , 它的命令行是基于 Lumo 做的封装, 编译部分不清楚, 然后还支持 Figwheel, 有点混搭了的感觉.