Jammit压缩工作在开发模式,但不是作为压缩JS

问题描述:

我的Rails应用程序现在相当进步,我想压缩包含的JS文件(Aloha编辑器与插件+ Gritter,组成多个文件与超过1MB的JS)正常。由于其良好的Rails集成,我决定选择Jammit。下面是我的配置/ assets.yml:Jammit压缩工作在开发模式,但不是作为压缩JS

package_assets:   always 
javascript_compressor: closure 
compressor_options: 
    compilation_level: ADVANCED_OPTIMIZATIONS 

javascripts: 
    admin: 
    - public/aloha/aloha.js 
    - public/aloha/plugins/com.gentics.aloha.plugins.Format/plugin.js 
    - public/aloha/plugins/com.gentics.aloha.plugins.Table/plugin.js 
    - public/aloha/plugins/com.gentics.aloha.plugins.List/plugin.js 
    - public/aloha/plugins/com.gentics.aloha.plugins.Link/plugin.js 
    - public/javascripts/*.js 
    - public/javascripts/gritter/*.js 

对于解释:aloha.js是一个扩展的jQuery 1.4.2 lib下,并在文件/ JavaScript的/ 的.js和/ gritter/的.js大多依赖于它(jQuery)。 我在包含我的视图代码中的标签

<%= include_javascripts :admin %> 

很简单。

当切换到开发模式(assets.yml包含package_assets:on)时,Jammit将单独保留JS文件并逐个嵌入它们,而我的应用程序就好了。但是,当处于生产模式(env =:production,或assets.yml包含package_assets:始终)时,Jammit会创建一个大约700kB(哇,这是一个胖怪物)的压缩JS文件,它可以正确嵌入,但是我得到在页面加载时发生JS错误“jQuery未定义”。我的第一个猜测是在编译过程中JS文件的顺序会改变,即使它不应该这样做。

还有一件事:离开压缩机在默认情况下(YUI)导致更加严重的加载JS错误。

有人可以帮我吗?

我们有很多压缩Aloha编辑器的问题,这些编译器使用“高级优化”编译器 - aloha核心编译得很好,但ExtJS依赖失败了编译。

由于aloha.js已经被编译,看它是否可以跳过编译,只是连接到结果文件而不是再次编译。

要尝试的另一件事是看你是否只能在你的编译器中启用whitespace_only选项或者basic_optimisations。这将显示它是否是编译过程中的问题。

文件的顺序可能是问题。我会建议明确指定每个文件,并按照你想要的顺序(即不要做/*.js)。

如果这适用于您,那么您可以将一些不需要订单的JavaScript文件移动到子文件夹中,并在该子文件夹上调用/*.js。