1
+ let uglifyes = require ( 'uglify-es' ) ;
2
+ let composer = require ( 'gulp-uglify/composer' ) ;
3
+ const uglify = composer ( uglifyes , console ) ;
4
+ const gulp = require ( 'gulp' ) ;
5
+ const replace = require ( 'gulp-replace' ) ;
6
+ const plumber = require ( 'gulp-plumber' ) ;
7
+ const autoprefixer = require ( 'gulp-autoprefixer' ) ;
8
+ const sass = require ( 'gulp-sass' ) ;
9
+ const concat = require ( 'gulp-concat' ) ;
10
+ const browserSync = require ( 'browser-sync' ) . create ( ) ;
11
+ const fs = require ( 'fs' ) ;
12
+ const del = require ( 'del' ) ;
13
+ const scriptsGlob = [ 'src/js/**/*.js' , 'src/js/init.js' ] ;
14
+ const stylesGlob = 'src/sass/**/*.scss' ;
15
+ const imagesGlob = 'src/img/**/*' ;
16
+ const pagesGlob = 'src/*.html' ;
17
+
18
+ gulp . task ( 'copy' , function ( ) {
19
+ gulp . src ( pagesGlob )
20
+ . pipe ( gulp . dest ( 'dist/' ) ) ;
21
+
22
+ gulp . src ( imagesGlob )
23
+ . pipe ( gulp . dest ( 'dist/img' ) ) ;
24
+ } ) ;
25
+
26
+ gulp . task ( 'inline' , [ 'sass' , 'scripts' , 'copy' ] , function ( ) {
27
+ gulp . src ( pagesGlob )
28
+ . pipe ( replace ( '/* REPLACED-INLINE-STYLESHEET */' , fs . readFileSync ( './dist/main.css' , 'utf8' ) ) )
29
+ . pipe ( replace ( '/* REPLACED-INLINE-JAVASCRIPT */' , fs . readFileSync ( './dist/tmp/app.js' , 'utf8' ) ) )
30
+ . pipe ( gulp . dest ( 'dist/' ) ) ;
31
+ } ) ;
32
+
33
+ gulp . task ( 'clean-tmp' , [ 'inline' ] , function ( ) {
34
+ return del ( [
35
+ 'dist/tmp' ,
36
+ 'dist/main.css'
37
+ ] ) ;
38
+ } ) ;
39
+
40
+ // Sass
41
+ gulp . task ( 'sass' , function ( ) {
42
+ return gulp . src ( stylesGlob )
43
+ . pipe ( plumber ( ) )
44
+ . pipe ( sass ( { outputStyle : 'compressed' } ) )
45
+ . pipe ( autoprefixer ( { browsers : [ '> 10%' ] } ) )
46
+ . pipe ( gulp . dest ( 'dist/' ) ) ;
47
+ } ) ;
48
+
49
+ gulp . task ( 'scripts' , function ( ) {
50
+ return gulp . src ( scriptsGlob )
51
+ . pipe ( plumber ( ) )
52
+ . pipe ( concat ( 'app.js' ) )
53
+ . pipe ( uglify ( ) )
54
+ . pipe ( gulp . dest ( 'dist/tmp/' ) ) ;
55
+ } ) ;
56
+
57
+ // Watch files For changes
58
+ gulp . task ( 'watch' , function ( ) {
59
+
60
+ browserSync . init ( {
61
+ server : {
62
+ baseDir : 'dist/'
63
+ }
64
+ } ) ;
65
+
66
+ gulp . watch ( scriptsGlob , [ 'scripts' , 'clean-tmp' ] ) ;
67
+ gulp . watch ( stylesGlob , [ 'sass' , 'clean-tmp' ] ) ;
68
+ gulp . watch ( pagesGlob , [ 'copy' ] ) . on ( 'change' , browserSync . reload ) ;
69
+
70
+ } ) ;
71
+
72
+ // Default Task
73
+ gulp . task ( 'default' , [ 'copy' , 'sass' , 'scripts' , 'inline' , 'clean-tmp' , 'watch' ] ) ;
74
+ gulp . task ( 'dist' , [ 'copy' , 'sass' , 'scripts' , 'inline' , 'clean-tmp' ] ) ;
0 commit comments