Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
593
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //
  2. // Variables ===================================
  3. //
  4.  
  5. // Load dependencies
  6. const autoprefixer = require('gulp-autoprefixer');
  7. const browsersync = require('browser-sync').create();
  8. const cached = require('gulp-cached');
  9. const cleancss = require('gulp-clean-css');
  10. const del = require('del');
  11. const fileinclude = require('gulp-file-include');
  12. const gulp = require('gulp');
  13. const gulpif = require('gulp-if');
  14. const npmdist = require('gulp-npm-dist');
  15. const replace = require('gulp-replace');
  16. const sass = require('gulp-sass');
  17. const uglify = require('gulp-uglify');
  18. const useref = require('gulp-useref');
  19.  
  20. // Define paths
  21. const paths = {
  22.   base: {
  23.     base: {
  24.       dir: './'
  25.     },
  26.     node: {
  27.       dir: './node_modules'
  28.     }
  29.   },
  30.   dist: {
  31.     base: {
  32.       dir: './dist'
  33.     },
  34.     libs: {
  35.       dir: './dist/assets/libs'
  36.     }
  37.   },
  38.   src: {
  39.     base: {
  40.       dir: './src',
  41.       files: './src/**/*'
  42.     },
  43.     css: {
  44.       dir: './src/assets/css',
  45.       files: './src/assets/css/**/*'
  46.     },
  47.     html: {
  48.       dir: './src',
  49.       files: './src/**/*.html',
  50.     },
  51.     img: {
  52.       dir: './src/assets/img',
  53.       files: './src/assets/img/**/*',
  54.     },
  55.     js: {
  56.       dir: './src/assets/js',
  57.       files: './src/assets/js/**/*'
  58.     },
  59.     partials: {
  60.       dir: './src/partials',
  61.       files: './src/partials/**/*'
  62.     },
  63.     scss: {
  64.       dir: './src/assets/scss',
  65.       files: './src/assets/scss/**/*',
  66.       main: './src/assets/scss/*.scss'
  67.     },
  68.     tmp: {
  69.       dir: './src/.tmp',
  70.       files: './src/.tmp/**/*'
  71.     }
  72.   }
  73. };
  74.  
  75. //
  76. // Tasks ===================================
  77. //
  78.  
  79. gulp.task('browsersync', function(callback) {
  80.   browsersync.init({
  81.     server: {
  82.       baseDir: [paths.src.tmp.dir, paths.src.base.dir, paths.base.base.dir]
  83.     },
  84.   });
  85.   callback();
  86. });
  87.  
  88. gulp.task('browsersyncReload', function(callback) {
  89.   browsersync.reload();
  90.   callback();
  91. });
  92.  
  93. gulp.task('watch', function() {
  94.   gulp.watch(paths.src.scss.files, gulp.series('scss'));
  95.   gulp.watch([paths.src.js.files, paths.src.img.files], gulp.series('browsersyncReload'));
  96.   gulp.watch([paths.src.html.files, paths.src.partials.files], gulp.series('fileinclude', 'browsersyncReload'));
  97. });
  98.  
  99. gulp.task('scss', function() {
  100.   return gulp
  101.     .src(paths.src.scss.main)
  102.     .pipe(sass().on('error', sass.logError))
  103.     .pipe(autoprefixer())
  104.     .pipe(gulp.dest(paths.src.css.dir))
  105.     .pipe(browsersync.stream());
  106. });
  107.  
  108. gulp.task('fileinclude', function(callback) {
  109.   return gulp
  110.     .src([
  111.       paths.src.html.files,
  112.       '!' + paths.src.tmp.files,
  113.       '!' + paths.src.partials.files
  114.     ])
  115.     .pipe(fileinclude({
  116.       prefix: '@@',
  117.       basepath: '@file',
  118.       indent: true
  119.     }))
  120.     .pipe(cached())
  121.     .pipe(gulp.dest(paths.src.tmp.dir));
  122. });
  123.  
  124. gulp.task('clean:tmp', function(callback) {
  125.   del.sync(paths.src.tmp.dir);
  126.   callback();
  127. });
  128.  
  129. gulp.task('clean:dist', function(callback) {
  130.   del.sync(paths.dist.base.dir);
  131.   callback();
  132. });
  133.  
  134. gulp.task('copy:all', function() {
  135.   return gulp
  136.     .src([
  137.       paths.src.base.files,
  138.       '!' + paths.src.partials.dir, '!' + paths.src.partials.files,
  139.       '!' + paths.src.scss.dir, '!' + paths.src.scss.files,
  140.       '!' + paths.src.tmp.dir, '!' + paths.src.tmp.files,
  141.       '!' + paths.src.js.dir, '!' + paths.src.js.files,
  142.       '!' + paths.src.css.dir, '!' + paths.src.css.files,
  143.       '!' + paths.src.html.files,
  144.     ])
  145.     .pipe(gulp.dest(paths.dist.base.dir));
  146. });
  147.  
  148. gulp.task('copy:libs', function() {
  149.   return gulp
  150.     .src(npmdist(), {
  151.       base: paths.base.node.dir
  152.     })
  153.     .pipe(gulp.dest(paths.dist.libs.dir));
  154. });
  155.  
  156. gulp.task('html', function() {
  157.   return gulp
  158.     .src([
  159.       paths.src.html.files,
  160.       '!' + paths.src.tmp.files,
  161.       '!' + paths.src.partials.files
  162.     ])
  163.     .pipe(fileinclude({
  164.       prefix: '@@',
  165.       basepath: '@file',
  166.       indent: true
  167.     }))
  168.     .pipe(replace(/href="(.{0,10})node_modules/g, 'href="$1assets/libs'))
  169.     .pipe(replace(/src="(.{0,10})node_modules/g, 'src="$1assets/libs'))
  170.     .pipe(useref())
  171.     .pipe(cached())
  172.     .pipe(gulpif('*.js', uglify()))
  173.     .pipe(gulpif('*.css', cleancss()))
  174.     .pipe(gulp.dest(paths.dist.base.dir));
  175. });
  176.  
  177. gulp.task('build', gulp.series(gulp.parallel('clean:tmp', 'clean:dist', 'copy:all', 'copy:libs'), 'scss', 'html'));
  178.  
  179. gulp.task('default', gulp.series(gulp.parallel('fileinclude', 'scss'), gulp.parallel('browsersync', 'watch')));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement