【发布时间】: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