sass.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. 'use strict';
  2. var fs = require('fs');
  3. var gulp = require('gulp');
  4. var Parker = require('parker/lib/Parker');
  5. var prettyJSON = require('prettyjson');
  6. var sass = require('gulp-sass');
  7. var plumber = require('gulp-plumber');
  8. var sourcemaps = require('gulp-sourcemaps');
  9. var sassLint = require('gulp-sass-lint');
  10. var postcss = require('gulp-postcss');
  11. var autoprefixer = require('autoprefixer');
  12. var CONFIG = require('../config.js');
  13. // Compiles Sass files into CSS
  14. gulp.task('sass', gulp.series('sass:foundation', 'sass:docs'));
  15. // Prepare dependencies
  16. gulp.task('sass:deps', function() {
  17. return gulp.src(CONFIG.SASS_DEPS_FILES)
  18. .pipe(gulp.dest('_vendor'));
  19. });
  20. // Compiles Foundation Sass
  21. gulp.task('sass:foundation', gulp.series('sass:deps', function() {
  22. return gulp.src(['assets/*'])
  23. .pipe(sourcemaps.init())
  24. .pipe(plumber())
  25. .pipe(sass().on('error', sass.logError))
  26. .pipe(postcss([autoprefixer()])) // uses ".browserslistrc"
  27. .pipe(sourcemaps.write('.'))
  28. .pipe(gulp.dest('_build/assets/css'));
  29. }));
  30. // Compiles docs Sass (includes Foundation code also)
  31. gulp.task('sass:docs', gulp.series('sass:deps', function() {
  32. return gulp.src('docs/assets/scss/docs.scss')
  33. .pipe(sourcemaps.init())
  34. .pipe(sass({
  35. includePaths: CONFIG.SASS_DOC_PATHS
  36. }).on('error', sass.logError))
  37. .pipe(postcss([autoprefixer()])) // uses ".browserslistrc"
  38. .pipe(sourcemaps.write('.'))
  39. .pipe(gulp.dest('_build/assets/css'));
  40. }));
  41. // Audits CSS filesize, selector count, specificity, etc.
  42. gulp.task('sass:audit', gulp.series('sass:foundation', function(done) {
  43. fs.readFile('./_build/assets/css/foundation.css', function(err, data) {
  44. var parker = new Parker(require('parker/metrics/All'));
  45. var results = parker.run(data.toString());
  46. console.log(prettyJSON.render(results));
  47. done();
  48. });
  49. }));