Code Monkey home page Code Monkey logo

middleman-inliner's Introduction

Gem Version

middleman-inliner

Provides helper to Inline JS/CSS in Middleman for performance.

= stylesheet_inline_tag "normalize", "all"
= javascript_inline_tag "all"

// Then all JS/CSS will be compressed and inlined.

Install

  • gem 'middleman-inliner' then bundle

  • In your config.rb, put following

activate :inliner
  • Replace your stylesheet_link_tag and javascript_include_tag to stylesheet_inline_tag and inline_javascript_inline_tag

To Speed your website

Following preference are recommended.

activate :inliner
configure :build do
  activate :minify_css
  activate :minify_javascript
  activate :gzip
  activate :minify_html
  activate :imageoptim
end
gem 'middleman-inliner'
gem 'middleman-minify_html'
gem 'middleman-imageoptim'

Deploy it to S3 and distribute with CloudFront is the fastest (and easiest).

See https://github.com/fredjean/middleman-s3_sync

I will write

  • middleman-image-inliner
  • middleman-image-lazyloader
  • middleman-asyncload to load JS/CSS async in one line.

middleman-inliner's People

Contributors

kaiinui avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

middleman-inliner's Issues

compatibility with middleman v4.0.0.beta.2?

When using this gem with middleman v4 I get the following error.

/Users/martin/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/middleman-inliner-1.0.1/lib/middleman-inliner.rb:43:in `<top (required)>': undefined method `register' for Inliner:Class (NoMethodError)
    from /Users/martin/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/bundler-1.10.3/lib/bundler/runtime.rb:76:in `require'
    from /Users/martin/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/bundler-1.10.3/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
    from /Users/martin/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/bundler-1.10.3/lib/bundler/runtime.rb:72:in `each'
    from /Users/martin/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/bundler-1.10.3/lib/bundler/runtime.rb:72:in `block in require'
    from /Users/martin/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/bundler-1.10.3/lib/bundler/runtime.rb:61:in `each'
    from /Users/martin/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/bundler-1.10.3/lib/bundler/runtime.rb:61:in `require'
    from /Users/martin/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/bundler-1.10.3/lib/bundler.rb:134:in `require'
    from /Users/martin/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/middleman-core-4.0.0.beta.2/lib/middleman-core/load_paths.rb:33:in `setup_bundler'
    from /Users/martin/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/middleman-core-4.0.0.beta.2/lib/middleman-core/load_paths.rb:15:in `setup_load_paths'
    from /Users/martin/.rbenv/versions/2.1.6/lib/ruby/gems/2.1.0/gems/middleman-cli-4.0.0.beta.2/bin/middleman:10:in `<top (required)>'
    from /Users/martin/.rbenv/versions/2.1.6/bin/middleman:23:in `load'
    from /Users/martin/.rbenv/versions/2.1.6/bin/middleman:23:in `<main>'

This extension is pretty awesome if you are concerned about critical-path loading (as I am). My current workaround for inlining styles or javascripts is:

javascript:
  #{ File.read( File.expand_path("source/javascripts/foobar.js") )}

…which obviously isn't a very durable solution. Therefore having a working extension that provides me a helper tag would be awesome <3.

Gem Load Error is: undefined method `register' for Inliner:Class

Gem Load Error is: undefined method `register' for Inliner:Class

/usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/runtime.rb:94:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'middleman-inliner'. (Bundler::GemRequireError)
Gem Load Error is: undefined method `register' for Inliner:Class
Backtrace for gem load error is:
/usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/middleman-inliner-1.0.1/lib/middleman-inliner.rb:43:in `<top (required)>'
/usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/runtime.rb:91:in `require'
/usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/runtime.rb:91:in `block (2 levels) in require'
/usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/runtime.rb:86:in `each'
/usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/runtime.rb:86:in `block in require'
/usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/runtime.rb:75:in `each'
/usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/runtime.rb:75:in `require'
/usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler.rb:107:in `require'
/usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/middleman-core-4.2.1/lib/middleman-core/load_paths.rb:35:in `setup_bundler'
/usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/middleman-core-4.2.1/lib/middleman-core/load_paths.rb:15:in `setup_load_paths'
/usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/middleman-cli-4.2.1/bin/middleman:10:in `<top (required)>'
/usr/local/var/rbenv/versions/2.4.0/bin/middleman:22:in `load'
/usr/local/var/rbenv/versions/2.4.0/bin/middleman:22:in `<main>'
Bundler Error Backtrace:
	from /usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/runtime.rb:90:in `block (2 levels) in require'
	from /usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/runtime.rb:86:in `each'
	from /usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/runtime.rb:86:in `block in require'
	from /usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/runtime.rb:75:in `each'
	from /usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/runtime.rb:75:in `require'
	from /usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler.rb:107:in `require'
	from /usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/middleman-core-4.2.1/lib/middleman-core/load_paths.rb:35:in `setup_bundler'
	from /usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/middleman-core-4.2.1/lib/middleman-core/load_paths.rb:15:in `setup_load_paths'
	from /usr/local/var/rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/middleman-cli-4.2.1/bin/middleman:10:in `<top (required)>'
	from /usr/local/var/rbenv/versions/2.4.0/bin/middleman:22:in `load'
	from /usr/local/var/rbenv/versions/2.4.0/bin/middleman:22:in `<main>'

Sprockets pre-rendering support?

I'm hoping to use this to inline only a few specific assets in my all.css file (I'm using different layout templates for development and build, so using the all.css file is useful to me), which has //= require main as a sprockets directive. Problem is, the inliner just outputs <style type="text/css">//= require main</style> which is of course wrong. Any thoughts on how to fix this?

Minification is not working for me

Hi, @kaiinui,

Your gem is exactly what i need!, great job.

Are there another configuration i need to do except what is on readme?
For me is not working minification when build middleman,
I create a repo test for that.

Thanx.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.