Advertisement
Guest User

Untitled

a guest
Feb 11th, 2016
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.28 KB | None | 0 0
  1. var gulp = require('gulp'),
  2. sass = require('gulp-sass'),
  3. browserSync = require('browser-sync'),
  4. uglify = require('gulp-uglify'),
  5. concatify = require('gulp-concat'),
  6. sourcemaps = require('gulp-sourcemaps'),
  7. imageop = require('gulp-image-optimization'),
  8. svgstore = require('gulp-svgstore'),
  9. svgmin = require('gulp-svgmin'),
  10. inject = require('gulp-inject'),
  11. cheerio = require('gulp-cheerio'),
  12. minifyhtml = require('gulp-htmlmin'),
  13. minifyCSS = require('gulp-cssnano');
  14.  
  15. // Paths to various files
  16. var paths = {
  17. scripts: ['src/js/*.js'],
  18. styles: ['src/scss/*'],
  19. images: ['src/img/**/*'],
  20. icons: ['src/img/icons/*.svg'],
  21. content: ['src/index.html']
  22. };
  23.  
  24. // Compiles scss files and outputs them to build/css/*.css
  25. gulp.task('styles', function(){
  26. return gulp.src(paths.styles)
  27. .pipe(sass())
  28. .pipe(gulp.dest('build/css/'));
  29. });
  30.  
  31. // Concats & minifies js files and outputs them to build/js/app.js
  32. gulp.task('scripts', function() {
  33. return gulp.src(paths.scripts)
  34. .pipe(sourcemaps.init())
  35. .pipe(uglify())
  36. .pipe(concatify('main.js'))
  37. .pipe(sourcemaps.write())
  38. .pipe(gulp.dest('build/js/'));
  39. });
  40.  
  41. // Minifies our HTML files and outputs them to build/*.html
  42. gulp.task('content', function() {
  43. return gulp.src(paths.content)
  44. .pipe(minifyhtml({
  45. empty: true,
  46. quotes: true
  47. }))
  48. .pipe(gulp.dest('build'));
  49. });
  50.  
  51. // Optimizes our image files and outputs them to build/image/*
  52. gulp.task('images', function() {
  53. return gulp.src(paths.images)
  54. .pipe(imageop({
  55. optimizationLevel: 5
  56. }))
  57. .pipe(gulp.dest('build/img'));
  58. });
  59.  
  60.  
  61. //Optimizes and inlines SVG images for manipulation
  62. gulp.task('svgstore', function(){
  63. var svgs = gulp.src(paths.icons)
  64. .pipe(cheerio({
  65. run: function($) {
  66. $('[fill]').removeAttr('fill');
  67. $('path').addClass('social-icon-path');
  68. },
  69. parserOptions: { xmlMode: true}
  70. }))
  71. .pipe(svgmin())
  72. .pipe(svgstore({inlineSvg: true}));
  73.  
  74. function fileContents(filePath, file) {
  75. return file.contents.toString();
  76. }
  77.  
  78. return gulp.src(paths.content)
  79. .pipe(inject(svgs, { transform: fileContents }))
  80. .pipe(gulp.dest('build'));
  81. });
  82.  
  83. // Watches for changes to our files and executes required scripts
  84. gulp.task('scss-watch', ['styles'], browserSync.reload);
  85. gulp.task('content-watch', ['svgstore','content'], browserSync.reload);
  86. gulp.task('image-watch', ['images', 'svgstore'], browserSync.reload);
  87. gulp.task('script-watch', ['scripts'], browserSync.reload);
  88.  
  89. // Launches a test webserver
  90. gulp.task('browse', function(){
  91. browserSync({
  92. port: 3030,
  93. server: {
  94. baseDir: "build"
  95. }
  96. });
  97.  
  98. gulp.watch(paths.scripts, ['script-watch']);
  99. gulp.watch(paths.styles, ['scss-watch']);
  100. gulp.watch(paths.content, ['content-watch']);
  101. gulp.watch(paths.images, ['image-watch']);
  102. gulp.watch(paths.icons, ['image-watch']);
  103. });
  104.  
  105. gulp.task('default', ['scripts', 'styles','images', 'svgstore', 'content', 'browse']);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement