0.01
No commit activity in last 3 years
No release in over 3 years
The dynamic stylesheet language for the Sprockets asset pipeline.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

~> 2.4
~> 1.1
 Project Readme

sprockets-less

Better Less integration with Sprockets 2.x

Build Status

When using Sprockets 2.x with Less you will eventually run into a pretty big issue. //= require directives will not allow Less mixins, variables, etc. to be shared between files. So you'll try to use @import, and that'll also blow up in your face. sprockets-less aims to fix this.

Note: If you use Rails 3.1, you may want to use the less-rails gem. But if you want to use Sprockets and Less anywhere else, like Sinatra, use sprockets-less.

Usage

In your Rack application, setup Sprockets as you normally would, and require "sprockets-less":

require "sprockets"
require "sprockets-less"
require "less"

map "/assets" do
  environment = Sprockets::Environment.new
  environment.append_path "assets/stylesheets"
  run environment
end

map "/" do
  run YourRackApp
end

Configuration

If you would like to configure any of the Less options, you can do so like this:

Sprockets::Less.options[:compress] = true

Import Hooks

Any @import to a .less file will automatically declare that file as a sprockets dependency to the file importing it. This means that you can edit imported framework files and see changes reflected in the parent durning development. So this:

@import "frameworks/bootstrap/mixins";

#leftnav { .border-radius(5px); }

Will end up acting as if you had done this below:

/*
 *= depend_on "frameworks/bootstrap/mixins.less"
*/

@import "frameworks/bootstrap/mixins";

#leftnav { .border-radius(5px); }

Helpers

Warning: this is currently non-functional

When referencing assets use the following helpers in LESS.

asset-path(@relative-asset-path)  /* Returns a string to the asset. */
asset-path("rails.png")           /* Becomes: "/assets/rails.png" */

asset-url(@relative-asset-path)   /* Returns url reference to the asset. */
asset-url("rails.png")            /* Becomes: url(/assets/rails.png) */

As a convenience, for each of the following asset classes there are corresponding -path and -url helpers image, font, video, audio, javascript and stylesheet. The following examples only show the -url variants since you get the idea of the -path ones above.

image-url("rails.png")            /* Becomes: url(/assets/rails.png) */
font-url("rails.ttf")             /* Becomes: url(/assets/rails.ttf) */
video-url("rails.mp4")            /* Becomes: url(/videos/rails.mp4) */
audio-url("rails.mp3")            /* Becomes: url(/audios/rails.mp3) */
javascript-url("rails.js")        /* Becomes: url(/assets/rails.js) */
stylesheet-url("rails.css")       /* Becomes: url(/assets/rails.css) */

Lastly, we provide a data url method for base64 encoding assets.

asset-data-uri("rails.png")       /* Becomes: url(data:image/png;base64,iVBORw0K...) */

Please note that these helpers are only available server-side, and something like ERB templates should be used if client-side rendering is desired.

License

Sprocket::Less is released under the MIT license. See LICENSE file for details.