Create a gist now

Instantly share code, notes, and snippets.

Jekyll plugin to render less.js - fixed for new versions of jekyll
module Jekyll
# 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)
FileUtils.mkdir_p(File.dirname(css_path))
begin
command = [site.config['lessc'],
less_path,
css_path
].join(' ')
puts 'Compiling LESS: ' + command
`#{command}`
end
end
end
end
end
@adunkman

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.

@Rowno

I added a line to remove the LESS files from the site.static_files array so they automatically get cleaned. https://gist.github.com/2391969

@tdak

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 https://gist.github.com/tdak/6496935

@mwcz

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.

@salipro4ever

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