Skip to content

Instantly share code, notes, and snippets.

Created October 23, 2010 21:46
  • Star 19 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
Star You must be signed in to star a gist
What would you like to do?
Jekyll plugin to render less.js - fixed for new versions of jekyll
module Jekyll
class LessCssFile < StaticFile
def write(dest)
# do nothing
# Expects a lessc: key in your _config.yml file with the path to a local less.js/bin/lessc
# Less.js will require node.js to be installed
class LessJsGenerator < Generator
safe true
priority :low
def generate(site)
src_root = site.config['source']
dest_root = site.config['destination']
less_ext = /\.less$/i
raise "Missing 'lessc' path in site configuration" if !site.config['lessc']
# static_files have already been filtered against excludes, etc.
site.static_files.each do |sf|
next if not sf.path =~ less_ext
less_path = sf.path
css_path = less_path.gsub(less_ext, '.css').gsub(src_root, dest_root)
css_dir = File.dirname(css_path)
css_dir_relative = css_dir.gsub(dest_root, '')
css_name = File.basename(css_path)
command = [site.config['lessc'],
].join(' ')
puts 'Compiling LESS: ' + command
raise "LESS compilation error" if $?.to_i != 0
# Add this output file so it won't be cleaned
site.static_files <<, site.source, css_dir_relative, css_name)
Copy link

I've modified this script slightly—I had issues with Jekyll "cleaning" the CSS file generated by LESS out of my output directory moments after it was created. I fixed it in a crufty way but it works.

Copy link

Rowno commented Apr 15, 2012

I added a line to remove the LESS files from the site.static_files array so they automatically get cleaned.

Copy link

Found a bug with generating css with lessc. I guess new lessc generator doesn't take OUTPUT file argument but just spits itout to STDOUT, so the above generator will fail, I've fixed the bug by adding > to the command. Here's the gist

Copy link

mwcz commented Oct 9, 2013

The line that adds the css file to site.static_files isn't working for me. There's no error, but the css file still gets cleaned. I can see that it's being created and then deleted within a fraction of a second.

If I create /css/test.css alongside /css/test.less, then /_site/css/test.css will not get cleaned by Jekyll. It's not pretty, but it works for now until someone figures out why this plugin isn't preventing the css file from being cleaned.

Copy link

Hi all, i am newbie. When i build with less plugin, i get error:
_jekyll 2.5.3 | Error: Permission denied - ./css D:/Working/Jekyll/casino8/css/test.less D:/Working/Jekyll/casino8/site/css/test.css

Plz, help me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment