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

欢迎!请参考关于页面获取更多有关此工作方式的信息。

0
ClojureScript

我正在尝试改进我的自动构建时间,因为我们不能使用 }(它是一个Chrome扩展程序,并且Chrome的安全策略禁止在Web页面中注入动态加载的JS),所以当我们使用下一个最快的优化 } 时,它花费了大量时间(即使是小改动也需30秒),因为应用程序需要拉取大量依赖项。我尝试使用新发布的模块功能将输出分成两个文件:一个包含所有依赖项,另一个包含我的代码,并观察到ClojureScript编译器没有跳过那些根本没有更改源文件的模块的重新生成。

深入代码,看起来是在 closure.clj 文件中 {{optimize-modules}} 函数中的函数进行的一个小改动,我们可以跳过发出所有源文件都没有更改的模块。

7 个答案

0

评论者:dvdreddy

你好,
我不太清楚社区在问题方面的最佳实践,因此创建了JIRA,如果你想要我在谷歌群组(链接:https://groups.google.com/forum/#!forum/clojurescript 文本:clojurescript)进行初步讨论,我会将此问题移至谷歌群组。

谢谢

0

评论者:thheller

:仅当在整个程序中使用时,通过Closure Compiler生成的模块才起作用。无法输入部分代码并重新使用其他编译运行的文件。否则,编译器将注入冲突的goog/base.js以及其他东西。

然而,不使用Closure Compiler很容易合并输出。只需将给定模块的所有源代码合并到一个文件中,无需任何处理。

0

评论者:dvdreddy

(链接:~thheller) 我同意,我观察到的是,文件生成的时间戳表明,Closure Compiler不是占时步骤,而是生成源映射,如果我们禁用源映射,可以将时间缩短到约5秒(开发中不能没有它们)观察在js文件生成后,cljs-base模块的js.map文件生成占据了整个30秒编译时间的15秒以上。我想看看这部分是否可以跳过。

0

评论者:dvdreddy

(链接:~thheller) 对上述内容的任何评论吗?

0

评论者:thheller

源映射不应该占用那么长时间。你使用的是什么硬件/操作系统?你是否可能正在写入网络挂载驱动器或类似的东西?源映射可能相当大,因此I/O可能较慢?

0

评论者:dvdreddy

这是一台普通的2013年Macbook pro,没有涉及NAS。生成的源映射大小约为6MB,不太大,让我看看是否可以分析构建并给您提供更具体的瓶颈信息。

0
参考:https://clojure.atlassian.net/browse/CLJS-2481(由alex+import报告)
...