sass.js 920 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. }), function (err, res) {
  22. if (err) {
  23. grunt.log.error(err.formatted + '\n');
  24. grunt.warn('');
  25. next(err);
  26. return;
  27. }
  28. grunt.file.write(el.dest, res.css);
  29. if (opts.sourceMap) {
  30. grunt.file.write(this.options.sourceMap, res.map);
  31. }
  32. next();
  33. });
  34. }.bind(this), this.async());
  35. });
  36. };