Play Framework 2:由于缩小(Google Closure Compiler),JavaScript会重复

28

我遇到了一个与JavaScript压缩有关的奇怪问题,问题是当将诸如test1.js、test2.js这样的JavaScript文件放置在/assets/javascript/test文件夹中,并使用以下选项进行闭包编译时:

val defaultOptions = new CompilerOptions()
    defaultOptions.closurePass = true
    defaultOptions.setProcessCommonJSModules(false)
    defaultOptions.setPrettyPrint(true)
    CompilationLevel.WHITESPACE_ONLY.setOptionsForCompilationLevel(defaultOptions)

它们被缩小了,但这会导致test1.min.js和test2.min.js文件共享相同的代码...当文件在同一页面中使用时,这将导致一些额外的JavaScript错误,并占用更多的磁盘空间。

然而,如果未设置CompilerOptions,JavaScript可以正确编译而没有重复,但编译级别太严格,我们的JavaScript因为某些在这些文件中写的东西而停止工作。总的来说,缩小过程太晚了,无法通过默认编译器选项修复所有项目js文件,所以现在唯一的选择是配置它以使用轻量级的缩小,但不进行js重复。任何对此问题的帮助都将不胜感激!

我正在使用Java项目的Play Framework 2.1.1。


1
你有没有找到这个问题的答案? - shuttj
1
经过更深入的挖掘,我发现了Play 2.2.1的这个问题:https://github.com/playframework/playframework/issues/2192 - shuttj
1
是的,最近我没有时间去处理它,尽管我们想出了一些非常大胆的方法来解决这个问题,但如果2.2.1已经修复了它,那么值得尝试并接受它作为解决方案。 - Mauno Vähä
2个回答

1

看起来这个话题引起了一些兴趣,我想指出,在升级到play版本2.2.2后,我无法复制此问题。因此,我将接受这个解决方案,因为它似乎是修复它的较少hacky的方法。


0

将Play Framework升级到2.2.2版本


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接