2024年Clojure状态调查!中分享您的想法。

欢迎!请参阅关于页面以获取更多关于此功能的信息。

+3
ClojureScript

大家好,
我有一个用cljs语言编写的Firefox插件,经过了高级优化,提交给插件后,审查告诉我我提交的zip文件与他们从源码构建的文件不同。

我使用diff-so-fancy比较生成的js文件,我发现主要差异是变量名。

那么有没有什么办法可以确保生成的js文件是一致的?

PS:我的项目源代码在这里
https://github.com/jiacai2050/gooreplacer/blob/firefox/cljs-src/project.clj#L76

1 个答案

+1

几年前的类似问题(当时是为了更好的缓存),至少当时的答案是“不”。但你可以试着用simple优化级别来构建。它也会进行一些重命名,但我认为它是稳定的。如果这样还不行,就可以用whitespace了。

`:simple` 和 `:whitespace` 都不能保证是确定性的。大部分随机性来自 CLJS 的 `gensym` 使用一个不断增长的全球整数。
但是 `gensym` 不是随机的。那么,随机排序又是从哪里来的呢?
...