4

私の .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)

しかし、顕著な違いはありません。

あるコメント投稿者が示唆したように、1 つの .js ファイルの内容を変更しようとしましたが、違いはありませんでした。

Heroku での圧縮済みプリコンパイル済み .js ファイルの出力の例:

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

変数名はマングルされているようですが、関数名はそうではありません。

関数名がマングルされない理由はありますか? または、Rails/js コード (つまり、javascript onclick イベント) から関数を呼び出すのが難しいため、これは望ましくない動作ですか。または、関数名がマングルされている場合、これらの onclick 呼び出しもマングルされた名前に変更されますか?

ありがとう :-)

4

2 に答える 2

0

ファイルを変更しようとしましたか? これによると、アセットファイルの生成はファイルの変更時間に基づいています。たぶん、あなたの設定も使用されていません。

于 2012-10-02T18:28:57.883 に答える
0

こんなはずじゃないの?

config.assets.js_compressor = Uglifier.new(:mangle => { :toplevel => true }, :output => { :comments => :copyright })
于 2013-12-16T03:19:15.237 に答える