我正在尝试改进一个用例的自动构建时间,在这个用例中我们不能使用 } (这是一个 Chrome 扩展程序,Chrome 的安全策略禁止动态加载 JS,对于注入网页的情况)。因此,当我使用下一个最快的优化选项 } 时,它花费了大量时间 (~30sec 对于即使是微小的更改),因为应用拉入了大量依赖项。我尝试使用新发布的模块功能将输出拆分为两个文件,一个包含所有依赖项,另一个包含我的代码,并观察到 ClojureScript 编译器不会跳过为源文件根本未更改的模块进行再生成。
深入研究代码,它看起来是closure.clj中的{{optimize-modules}}函数中的函数的一次微调变化,我们可以在其中跳过跳过所有源文件都未发生变化的模块的生成。