gulpfile.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. var gulp = require('gulp');
  2. var sass = require('gulp-sass');
  3. var header = require('gulp-header');
  4. var cleanCSS = require('gulp-clean-css');
  5. var rename = require("gulp-rename");
  6. var autoprefixer = require('gulp-autoprefixer');
  7. var pkg = require('./package.json');
  8. var browserSync = require('browser-sync').create();
  9. // Set the banner content
  10. var banner = ['/*!\n',
  11. ' * Start Bootstrap - <%= pkg.title %> v<%= pkg.version %> (<%= pkg.homepage %>)\n',
  12. ' * Copyright 2013-' + (new Date()).getFullYear(), ' <%= pkg.author %>\n',
  13. ' * Licensed under <%= pkg.license %> (https://github.com/BlackrockDigital/<%= pkg.name %>/blob/master/LICENSE)\n',
  14. ' */\n',
  15. '\n'
  16. ].join('');
  17. // Copy third party libraries from /node_modules into /vendor
  18. gulp.task('vendor', function() {
  19. // Bootstrap
  20. gulp.src([
  21. './node_modules/bootstrap/dist/**/*',
  22. '!./node_modules/bootstrap/dist/css/bootstrap-grid*',
  23. '!./node_modules/bootstrap/dist/css/bootstrap-reboot*'
  24. ])
  25. .pipe(gulp.dest('./vendor/bootstrap'))
  26. // jQuery
  27. gulp.src([
  28. './node_modules/jquery/dist/*',
  29. '!./node_modules/jquery/dist/core.js'
  30. ])
  31. .pipe(gulp.dest('./vendor/jquery'))
  32. });
  33. // Compile SCSS
  34. gulp.task('css:compile', function() {
  35. return gulp.src('./scss/**/*.scss')
  36. .pipe(sass.sync({
  37. outputStyle: 'expanded'
  38. }).on('error', sass.logError))
  39. .pipe(autoprefixer({
  40. browsers: ['last 2 versions'],
  41. cascade: false
  42. }))
  43. .pipe(header(banner, {
  44. pkg: pkg
  45. }))
  46. .pipe(gulp.dest('./css'))
  47. });
  48. // Minify CSS
  49. gulp.task('css:minify', ['css:compile'], function() {
  50. return gulp.src([
  51. './css/*.css',
  52. '!./css/*.min.css'
  53. ])
  54. .pipe(cleanCSS())
  55. .pipe(rename({
  56. suffix: '.min'
  57. }))
  58. .pipe(gulp.dest('./css'))
  59. .pipe(browserSync.stream());
  60. });
  61. // CSS
  62. gulp.task('css', ['css:compile', 'css:minify']);
  63. // Default task
  64. gulp.task('default', ['css', 'vendor']);
  65. // Configure the browserSync task
  66. gulp.task('browserSync', function() {
  67. browserSync.init({
  68. server: {
  69. baseDir: "./"
  70. }
  71. });
  72. });
  73. // Dev task
  74. gulp.task('dev', ['css', 'browserSync'], function() {
  75. gulp.watch('./scss/*.scss', ['css']);
  76. gulp.watch('./*.html', browserSync.reload);
  77. });