新手问题 关于 js 代码的压缩问题,为什么我的 precompile 只合并了文件,没删除注释?

jicheng1014 · 2014年01月15日 · 最后由 lithium4010 回复于 2015年06月06日 · 2677 次阅读

遇见了这么一个问题,我在 precompile 了 assets 之后,application 里面的代码却包含了我所有的 js 注释

最典型的就是 gem jquery-rails 了,application 里包含了 jquery, 但是是有注释版本的 自己写的 js 也没有删除空格和换行什么的 只是 precompile 后,这些文件合并成了一个大 application-XXXXX.js 文件,这个文件有 200-300k 我想压缩了 jquery 之后估计就几十 k 吧

目前我知道的一个解决方案是在 application.js 中将 require jquery 换成 require jquery.min
但这没解决问题,只是在外部调用了一个压缩好了的 jquery 而已,不是 precompile 的时候压缩的

还请问这是个什么原理? 新手,问题低级还请海涵

bash 下查看版本 uglifyjs --version uglify-js 2.3.6

gemfile

source 'http://ruby.taobao.org'
gem 'rails', '4.0.0'
gem 'sqlite3'
gem 'bootstrap-sass'
gem 'devise'
gem 'nokogiri'
gem 'sass-rails', '~> 4.0.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 1.2'
group :doc do
  gem 'sdoc', require: false
end

config/application.rb

require File.expand_path('../boot', __FILE__)
require 'rails/all'
Bundler.require(:default, Rails.env)
module BaseStation
  class Application < Rails::Application
  end
end

config/enviorments/production.rb

BaseStation::Application.configure do
  config.cache_classes = true
  config.eager_load = true
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true
  config.serve_static_assets = false
  config.assets.js_compressor = :uglifier
  config.assets.compile = false
  config.assets.digest = true
  config.assets.version = '1.0'
  config.log_level = :info
  config.i18n.fallbacks = true
  config.active_support.deprecation = :notify
  config.log_formatter = ::Logger::Formatter.new
end

继续自问自答
预编译需要带条件 rake assets:precompile RAILS_ENV=production

#1 楼 @jicheng1014 我也遇到这个问题,多谢

需要 登录 后方可回复, 如果你还没有账号请 注册新账号