middleman/middleman-sprockets

View on GitHub
docs/usage-with-rails-assets.md

Summary

Maintainability
Test Coverage
## Usage with Rails Assets

One of the simplest ways to use middleman-sprockets to manage frontend assets is via [Rails Assets](https://rails-assets.org). Rails Assets is a frictionless proxy between Bundler and Bower to manage Bower-based assets through your existing Gemfile, and then letting the asset pipeline handle the rest.

Here's a quick guide to using Rails Assets with a new Middleman 4 site:

1. Go to [rails-assets.org](https://rails-assets.org) and identify your dependency and version. Chances are it's already there; rails-assets then packages your dependency as a gem on demand for consumption by Bundler.

2. In your Gemfile, add sprockets and a rails-assets block with the gemfiles chosen from step 1:

  ```
  # Gemfile
  gem 'middleman-sprockets', '4.0.0.rc.3'

  source 'https://rails-assets.org' do
    gem 'rails-assets-bootstrap-autohidingnavbar', '1.0.0'
    gem 'rails-assets-jquery', '2.1.1'
    gem 'rails-assets-slick.js', '1.5.7'
  end
  ```

3. In your config.rb, add the following block to enable the asset pipeline and add RailsAssets gems to your load path:

  ```
  # config.rb
  # General configuration
  activate :sprockets

  if defined? RailsAssets
    RailsAssets.load_paths.each do |path|
      sprockets.append_path path
    end
  end
  ```

4. run `bundle install`

5. Add the necessary import statements to your site.css.scss and all.js files. Note that rails-assets may suggest a sprockets `//= slick.js` import statement, but if the library is packaged with SASS, you likely want to use a SASS import `@import "slick.js";` instead.


You may run into edge cases where the assets in the generated gem are not packaged in a traditional way, or if you only need a subset of the library's functionality. In those cases, a quick

```
cd `bundle show gemname`
```

and opening up the library in your text editor will show you the necessary path & file information. In the example above, since slick.js ends with .js, make sure you specify the javascript import as:

```
 //= require slick.js.js
```

Finally, note that you can still use traditional hand-packaged gems like bootstrap-sass and font-awesome-sass in your Gemfile as well. Here's a complete Gemfile for reference:

```
# If you do not have OpenSSL installed, change
# the following line to use 'http://'
source 'https://rubygems.org'

# For faster file watcher updates on Windows:
# gem 'wdm', '~> 0.1.0', platforms: [:mswin, :mingw]

# Windows does not come with time zone data
# gem 'tzinfo-data', platforms: [:mswin, :mingw, :jruby]

# Middleman Gems
gem 'middleman', '>= 4.0.0'
gem 'middleman-livereload'
gem 'middleman-compass', '>= 4.0.0'
gem 'middleman-sprockets', '4.0.0.rc.3'

gem 'bootstrap-sass'
gem 'font-awesome-sass'

source 'https://rails-assets.org' do
  gem 'rails-assets-bootstrap-autohidingnavbar', '1.0.0'
  gem 'rails-assets-jquery', '2.1.1'
  gem 'rails-assets-slick.js', '1.5.7'
end
```