当使用代码拆分的同时进行高级优化(默认开启 :optimize-constants),预先编译好的关键字总是最终编译成 cljs-base,即使在单个模块中使用也是如此。
如何复现
- 解压缩附加的最小案例(基本上是来自 https://script.clojure.org/guides/code-splitting)的示例
- java -cp /path/to/cljs.jar:src clojure.main release.clj
- 检查生成的文件
实际行为
尽管 :this-is-a-very-long-keyword 只在 bar.cljs 中使用,但它被编译入 cljs_base.js。在第 286 行(已隐藏)
var ...,Rg=new L(null,"this-is-a-very-long-keyword","this-is-a-very-long-keyword",-1251510263),...;
预期的行为
Rg 的定义应该出现在 bar.js 中。