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 |
This comment has been minimized.
This comment has been minimized.
I added a line to remove the LESS files from the |
This comment has been minimized.
This comment has been minimized.
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 |
This comment has been minimized.
This comment has been minimized.
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 |
This comment has been minimized.
This comment has been minimized.
Hi all, i am newbie. When i build with less plugin, i get error: Plz, help me. |
This comment has been minimized.
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.