How do I minify CSS in Rails 4?

2019-02-04 17:47发布

I tried the following, however I look at the CSS source and it does not minify! I restarted the server several dozen times. I turned off cache in the browser. I also tried the 'yui-compressor' gem.

config/environments/development.rb

  config.assets.debug = false
  config.assets.css_compressor = :sass
  config.assets.compile = true

Gemfile

group :assets do
  # Add any compass extensions here
  # Use SCSS for stylesheets
  gem 'sass-rails', '~> 4.0.0'

Reference

http://edgeguides.rubyonrails.org/asset_pipeline.html#customizing-the-pipeline

Version

WEBrick 1.3.1, ruby 2.0.0 (2013-06-27) [i386-mingw32], Rails 4.0.3

4条回答
看我几分像从前
2楼-- · 2019-02-04 18:27

This works to me rails-html-css-js-gzip-compression on Ruby 2.2.0 - Rails 4.2.0

查看更多
你好瞎i
3楼-- · 2019-02-04 18:30

I was having the same problem in my production environment, where I couldn't get the CSS to minify upon deploying to Heroku. After turning on compression with the following:

production.rb

config.assets.css_compressor = :sass

Gemfile

gem 'sass-rails', '~> 4.0.0'    

I managed to get it to minify by updating the assets version:

production.rb

config.assets.version = '1.1' # was '1.0'

Doing a few tests afterwards, I found that updating the source CSS/SASS had the same effect. So try updating your stylesheets (as opposed to only the config), which should "kickstart" the minification process when Heroku precompiles your assets after you push, without needing to update the assets version.

查看更多
我想做一个坏孩纸
4楼-- · 2019-02-04 18:34

Precompile

You'll need to precompile the assets

Rails minifies your assets if you precompile them. This is only for production, but means you're able to use files such as application.js and application.css with minified code

Try this:

$ rake assets:precompile RAILS_ENV=production
$ git add .
$ git commit -a -m "Precompiled Assets"
$ git push heroku master

This will precompile (& minify) your assets, allowing you to use the compiled files in production

查看更多
唯我独甜
5楼-- · 2019-02-04 18:37

This was failing for me because I had image-url("/img/header/gradient.png") instead of image-url("img/header/gradient.png"). The moral: don't use a slash at the beginning of the path.

查看更多
登录 后发表回答