PageRenderTime 45ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/wp-content/themes/ffap-2015/gulpfile.js

https://gitlab.com/charlinecouchot/french-fries-apple-pie
JavaScript | 196 lines | 79 code | 20 blank | 97 comment | 0 complexity | 67b314c0786ec9b7a7cae944863e8dd2 MD5 | raw file
  1. /**
  2. *
  3. * Gulpfile setup
  4. *
  5. * @since 1.0.0
  6. * @authors Charline Couchot
  7. * @package FFAP
  8. */
  9. // Configuration du projet
  10. var project = 'ffap-2015',
  11. url = 'frenchfriesandapplepie.dev',
  12. bower = './assets/bower_components/';
  13. build = './ffap-2015/',
  14. buildInclude = [
  15. '**/*.php',
  16. '**/*.html',
  17. '**/*.css',
  18. '**/*.js',
  19. '**/*.svg',
  20. '**/*.ttf',
  21. '**/*.otf',
  22. '**/*.eot',
  23. '**/*.woff',
  24. '**/*.woff2',
  25. 'screenshot.png',
  26. '!node_modules/**/*',
  27. '!assets/bower_components/**/*',
  28. '!style.css.map',
  29. '!assets/js/custom/*',
  30. '!assets/css/patrials/*'
  31. ];
  32. var gulp = require('gulp'),
  33. browserSync = require('browser-sync'),
  34. reload = browserSync.reload,
  35. autoprefixer = require('gulp-autoprefixer'),
  36. minifycss = require('gulp-uglifycss'),
  37. filter = require('gulp-filter'),
  38. uglify = require('gulp-uglify'),
  39. imagemin = require('gulp-imagemin'),
  40. newer = require('gulp-newer'),
  41. rename = require('gulp-rename'),
  42. concat = require('gulp-concat'),
  43. notify = require('gulp-notify'),
  44. cmq = require('gulp-combine-media-queries'),
  45. runSequence = require('gulp-run-sequence'),
  46. sass = require('gulp-sass'),
  47. plugins = require('gulp-load-plugins')({
  48. camelize: true
  49. }),
  50. ignore = require('gulp-ignore'),
  51. rimraf = require('gulp-rimraf'),
  52. zip = require('gulp-zip'),
  53. plumber = require('gulp-plumber'),
  54. cache = require('gulp-cache'),
  55. sourcemaps = require('gulp-sourcemaps');
  56. // BROWSER SYNC
  57. gulp.task('browser-sync', function () {
  58. var files = [
  59. '**/*.php',
  60. '**/*.{png,jpg,gif}'
  61. ];
  62. browserSync.init(files, {
  63. watchTask: true,
  64. open: 'external',
  65. host: url,
  66. proxy: url,
  67. port: 3000,
  68. injectChanges: true
  69. });
  70. });
  71. // SASS PROCESS
  72. gulp.task('styles', function () {
  73. gulp.src('./assets/css/*.scss')
  74. .pipe(plumber())
  75. .pipe(sourcemaps.init())
  76. .pipe(sass({errLogToConsole: true,outputStyle: 'compact',precision: 10}))
  77. .pipe(sourcemaps.write({includeContent: false}))
  78. .pipe(sourcemaps.init({loadMaps: true}))
  79. .pipe(autoprefixer('last 2 version', '> 1%', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4'))
  80. .pipe(sourcemaps.write('.'))
  81. .pipe(plumber.stop())
  82. .pipe(gulp.dest('./'))
  83. .pipe(filter('**/*.css'))
  84. //.pipe(cmq({log: true}))
  85. .pipe(reload({stream: true}))
  86. .pipe(rename({suffix: '.min'}))
  87. .pipe(minifycss({maxLineLen: 80}))
  88. .pipe(gulp.dest('./'))
  89. .pipe(reload({stream: true}))
  90. .pipe(notify({message: 'Styles task complete',onLast: true}))
  91. });
  92. // VENDOR SCRIPTS
  93. gulp.task('vendorsJs', function () {
  94. return gulp.src(['./assets/js/vendor/*.js', bower + '**/*.js'])
  95. .pipe(concat('vendors.js'))
  96. .pipe(gulp.dest('./assets/js'))
  97. .pipe(rename({basename: "vendors",suffix: '.min'}))
  98. .pipe(uglify())
  99. .pipe(gulp.dest('./assets/js/'))
  100. .pipe(notify({message: 'Vendor scripts task complete',onLast: true}));
  101. });
  102. // CUSTOMS SCRIPTS
  103. gulp.task('scriptsJs', function () {
  104. return gulp.src('./assets/js/custom.js')
  105. .pipe(rename({basename: "custom",suffix: '.min'}))
  106. .pipe(uglify())
  107. .pipe(gulp.dest('./assets/js/'))
  108. .pipe(notify({message: 'Custom scripts task complete',onLast: true}));
  109. });
  110. // IMAGES
  111. gulp.task('images', function () {
  112. // Add the newer pipe to pass through newer images only
  113. return gulp.src(['./assets/images/**/*.{png,jpg,gif}'])
  114. .pipe(newer('./assets/images/'))
  115. .pipe(rimraf({force: true}))
  116. .pipe(imagemin({optimizationLevel: 7,progressive: true,interlaced: true}))
  117. .pipe(gulp.dest('./assets/images/'))
  118. .pipe(notify({message: 'Images task complete',onLast: true}));
  119. });
  120. // FEMME DE MENAGE
  121. gulp.task('clear', function () {
  122. cache.clearAll();
  123. });
  124. // PREPARATION DU ZIP
  125. gulp.task('cleanup', function () {
  126. return gulp.src(['./assets/bower_components', '**/.sass-cache', '**/.DS_Store'], {read: false})
  127. .pipe(ignore('node_modules/**')) // Exemple de fichier à ignorer
  128. .pipe(rimraf({force: true}))
  129. });
  130. gulp.task('cleanupFinal', function () {
  131. return gulp.src(['./assets/bower_components', '**/.sass-cache', '**/.DS_Store'], {
  132. read: false
  133. }) // much faster
  134. .pipe(ignore('node_modules/**')) // Exemple de fichier à ignorer
  135. .pipe(rimraf({
  136. force: true
  137. }))
  138. });
  139. // BUILDING
  140. // buildFiles copies all the files in buildInclude to build folder - check variable values at the top buildImages copies all the images from img folder in assets while ignoring images inside raw folder if any
  141. gulp.task('buildFiles', function () {
  142. return gulp.src(buildInclude)
  143. .pipe(gulp.dest(build))
  144. .pipe(notify({message: 'Copy from buildFiles complete',onLast: true}));
  145. });
  146. // OPTIMISATION DES IMAGES
  147. gulp.task('buildImages', function () {
  148. return gulp.src('assets/images/**/*')
  149. .pipe(gulp.dest(build + 'assets/images/'))
  150. .pipe(plugins.notify({message: 'Images copied to buildTheme folder',onLast: true}));
  151. });
  152. // CONSTRUCTION DU ZIP
  153. gulp.task('buildZip', function () {
  154. return gulp.src(build + '/**/')
  155. .pipe(zip(project + '.zip'))
  156. .pipe(gulp.dest('./'))
  157. .pipe(notify({message: 'Zip task complete',onLast: true}));
  158. });
  159. // NETTOYAGE ET CONSTRUCTION DU ZIP INSTALLABLE
  160. gulp.task('build', function (cb) {
  161. runSequence('styles', 'cleanup', 'vendorsJs', 'scriptsJs', 'buildFiles', 'buildImages', 'buildZip', 'cleanupFinal', cb);
  162. });
  163. // TÂCHE PAR DEFAUT
  164. gulp.task('default', ['styles', 'vendorsJs', 'scriptsJs', 'images'], function () {
  165. //gulp.watch('./assets/images/**/*', ['images']);
  166. //gulp.watch('./assets/css/**/*.scss', ['styles']);
  167. //gulp.watch('./assets/js/**/*.js', ['scriptsJs', browserSync.reload]);
  168. });