sass.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. 'use strict';
  2. var path = require('path');
  3. var eachAsync = require('each-async');
  4. var assign = require('object-assign');
  5. var sass = require('node-sass');
  6. module.exports = function (grunt) {
  7. grunt.verbose.writeln('\n' + sass.info() + '\n');
  8. grunt.registerMultiTask('sass', 'Compile Sass to CSS', function () {
  9. eachAsync(this.files, function (el, i, next) {
  10. var opts = this.options({
  11. precision: 10
  12. });
  13. var src = el.src[0];
  14. if (!src || path.basename(src)[0] === '_') {
  15. next();
  16. return;
  17. }
  18. sass.render(assign({}, opts, {
  19. file: src,
  20. outFile: el.dest,
  21. success: function (res) {
  22. grunt.file.write(el.dest, res.css);
  23. if (opts.sourceMap && !opts.sourceMapEmbed) {
  24. grunt.file.write(opts.sourceMap === true ? (el.dest + '.map') : path.relative(process.cwd(), opts.sourceMap), res.map);
  25. }
  26. next();
  27. },
  28. error: function (err) {
  29. grunt.log.error(err.message + '\n ' + 'Line ' + err.line + ' Column ' + err.column + ' ' + path.relative(process.cwd(), err.file) + '\n');
  30. grunt.warn('');
  31. next(err);
  32. }
  33. }));
  34. }.bind(this), this.async());
  35. });
  36. };