2
0

styles.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. var gulp = require('gulp');
  2. var sass = require('gulp-sass');
  3. var config = require('../config');
  4. var autoprefixer = require('gulp-autoprefixer');
  5. var simpleCopyTask = require('../lib/simplyCopy');
  6. var normalizePath = require('../lib/normalize-path');
  7. var gutil = require('gulp-util');
  8. var flatten = function(arrOfArr) {
  9. return arrOfArr.reduce(function(flat, more) {
  10. return flat.concat(more);
  11. }, []);
  12. };
  13. gulp.task('styles', ['styles:sass', 'styles:css']);
  14. gulp.task('styles:css', simpleCopyTask('css/**/*'));
  15. gulp.task('styles:sass', function () {
  16. // Wagtail Sass files include each other across applications,
  17. // e.g. wagtailimages Sass files will include wagtailadmin/sass/mixins.scss
  18. // Thus, each app is used as an includePath.
  19. var includePaths = flatten(config.apps.map(function(app) { return app.scssIncludePaths(); }));
  20. // Not all files in a directory need to be compiled, so each app defines
  21. // its own Sass files that need to be compiled.
  22. var sources = flatten(config.apps.map(function(app) { return app.scssSources(); }));
  23. return gulp.src(sources)
  24. .pipe(sass({
  25. errLogToConsole: true,
  26. includePaths: includePaths,
  27. outputStyle: 'expanded'
  28. }).on('error', sass.logError))
  29. .pipe(autoprefixer({
  30. browsers: ['last 3 versions', 'not ie <= 8'],
  31. cascade: false
  32. }))
  33. .pipe(gulp.dest(function(file) {
  34. // e.g. wagtailadmin/scss/core.scss -> wagtailadmin/css/core.css
  35. // Changing the suffix is done by Sass automatically
  36. return normalizePath(file.base)
  37. .replace(
  38. '/' + config.srcDir + '/',
  39. '/' + config.destDir + '/'
  40. )
  41. .replace('/scss/', '/css/');
  42. }))
  43. .on('error', gutil.log);
  44. });