【问题标题】:Should Rails uglifier uglify (mangle) function names?Rails uglifier 是否应该对函数名进行 uglify (mangle) 处理?
【发布时间】:2012-09-16 12:32:33
【问题描述】:

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

根据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 调用也会被重命名为损坏的名称?

谢谢:-)

【问题讨论】:

  • 也许你的 JavaScript 代码已经很丑了;P
  • 您是在预编译资产还是在运行中编译它们? rake assets:precompile in development 时会发生什么?
  • 你能给我们看一个非损坏输出的例子吗?
  • @KaleMcNaney 在动态开发中,在 Heroku 预编译上推送到 Heroku
  • @CrazyCasta 好主意-我已将其添加到问题中并重新迭代了整个问题,因为这里的 cmets 让我认为它可能会正常工作。也许。 :)

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


【解决方案1】:

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

【讨论】:

  • 是的,确实尝试过。请参阅重复的问题。谢谢 :-)
【解决方案2】:

不应该这样吗?

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多