应该Rails uglifier uglify(mangle)函数名吗?

时间:2012-09-16 12:32:34

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 asset-pipeline uglifyjs

我的.js文件被压缩并且变量被破坏,但函数名称没有被修改(在Heroku上运行最新的Rails 3.2.8和最新的uglify 1.3.0 gem)。

根据https://github.com/lautis/uglifier#usage,“mangle”选项默认为true。以下是我的配置。

来自production.rb:

config.assets.compress = true
config.assets.js_compressor  = :uglifier

我也试过

config.assets.compress = true
config.assets.js_compressor  = Uglifier.new(:mangle => true, :toplevel => true, :copyright => true)

但没有明显的区别。

正如一位评论者建议的那样,我确实尝试更改我的.js文件的内容,但没有任何区别。

在Heroku上输出压缩的预编译.js文件的示例:

show_slideout_notification=function(){jQuery(".slideout_notification").slideDown();var e=$(".slideout_notification .countdown

似乎变量名称被破坏,但函数名称不是。

为什么功能名称没有被破坏的任何想法?或者这是不想要的行为,因为从我的Rails / js代码(即javascript onclick事件)调用函数是很困难的。或者,如果函数名称被破坏,那些onclick调用是否也会重命名为受损名称?

谢谢: - )

2 个答案:

答案 0 :(得分:0)

您是否尝试修改过该文件?根据{{​​3}},资产文件的生成基于文件修改时间。也许你的设置甚至没有被使用。

答案 1 :(得分:0)

不应该是这样吗?

config.assets.js_compressor = Uglifier.new(:mangle => { :toplevel => true }, :output => { :comments => :copyright })