Created
October 23, 2010 21:46
-
-
Save andyfowler/642739 to your computer and use it in GitHub Desktop.
Jekyll plugin to render less.js - fixed for new versions of jekyll
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Jekyll | |
class LessCssFile < StaticFile | |
def write(dest) | |
# do nothing | |
end | |
end | |
# 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) | |
FileUtils.mkdir_p(css_dir) | |
begin | |
command = [site.config['lessc'], | |
less_path, | |
css_path | |
].join(' ') | |
puts 'Compiling LESS: ' + command | |
`#{command}` | |
raise "LESS compilation error" if $?.to_i != 0 | |
end | |
# Add this output file so it won't be cleaned | |
site.static_files << LessCssFile.new(site, site.source, css_dir_relative, css_name) | |
end | |
end | |
end | |
end |
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.
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
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