1
+ var gulp = require ( 'gulp' ) ;
2
+ var del = require ( 'del' ) ;
3
+ var browserSync = require ( 'browser-sync' ) . create ( ) ;
4
+ var sass = require ( 'gulp-sass' ) ;
5
+ var autoprefixer = require ( 'gulp-autoprefixer' ) ;
6
+ var concatCss = require ( 'gulp-concat-css' ) ;
7
+ var cleanCSS = require ( 'gulp-clean-css' ) ;
8
+ var rename = require ( "gulp-rename" ) ;
9
+ var uglify = require ( 'gulp-uglify' ) ;
10
+ var plumber = require ( "gulp-plumber" ) ;
11
+ var ghPages = require ( 'gulp-gh-pages' ) ;
12
+ var svgSprite = require ( 'gulp-svg-sprite' ) ;
13
+ var svgmin = require ( 'gulp-svgmin' ) ;
14
+
15
+ //Пути
16
+ const paths = {
17
+ styles : {
18
+ src : "src/styles/main.scss" ,
19
+ watch : "src/styles/**/*.scss" ,
20
+ dest : "dist/styles/"
21
+ } ,
22
+ stylesNlz : {
23
+ src : "src/styles/layout/normalize.css" ,
24
+ dest : "dist/styles/layout/"
25
+ } ,
26
+ stylesBoot : {
27
+ src : "src/styles/layout/bootstrap-grid.min.css" ,
28
+ dest : "dist/styles/layout/"
29
+ } ,
30
+ scripts : {
31
+ src : "src/scripts/main.js" ,
32
+ watch : "src/scripts/*.js" ,
33
+ dest : "dist/scripts/"
34
+ } ,
35
+ html : {
36
+ src : "src/*.html" ,
37
+ watch : "src/*.html" ,
38
+ dest : "dist/"
39
+ } ,
40
+ images : {
41
+ src : "src/images/**/*.*" ,
42
+ dest : "dist/images/"
43
+ } ,
44
+ fonts : {
45
+ src : "src/fonts/*.*" ,
46
+ dest : "dist/fonts/"
47
+ }
48
+ } ;
49
+
50
+
51
+ //Удаление папки dist
52
+ gulp . task ( "clean" , ( ) => {
53
+ return del ( "dist" ) ;
54
+ } ) ;
55
+
56
+ //Создание ветки gh-pages и загрузка туда содержимого папки dist
57
+ gulp . task ( "deploy" , ( ) => {
58
+ return gulp . src ( "./dist/**/*" ) . pipe ( ghPages ( ) ) ;
59
+ } ) ;
60
+
61
+ //Перенос файлов
62
+ gulp . task ( 'html' , function ( ) {
63
+ return gulp
64
+ . src ( paths . html . src )
65
+ . pipe ( plumber ( ) )
66
+ . pipe ( gulp . dest ( paths . html . dest ) ) ;
67
+ } ) ;
68
+
69
+ gulp . task ( 'stylesNlz' , function ( ) {
70
+ return gulp . src ( paths . stylesNlz . src ) . pipe ( gulp . dest ( paths . stylesNlz . dest ) ) ;
71
+ } ) ;
72
+
73
+ gulp . task ( 'stylesBoot' , function ( ) {
74
+ return gulp . src ( paths . stylesBoot . src ) . pipe ( gulp . dest ( paths . stylesBoot . dest ) ) ;
75
+ } ) ;
76
+
77
+ gulp . task ( 'images' , function ( ) {
78
+ return gulp . src ( paths . images . src ) . pipe ( gulp . dest ( paths . images . dest ) ) ;
79
+ } ) ;
80
+
81
+ gulp . task ( 'scripts' , function ( ) {
82
+ return gulp . src ( paths . scripts . src ) . pipe ( gulp . dest ( paths . scripts . dest ) ) ;
83
+ } ) ;
84
+
85
+ gulp . task ( 'fonts' , function ( ) {
86
+ return gulp . src ( paths . fonts . src ) . pipe ( gulp . dest ( paths . fonts . dest ) ) ;
87
+ } ) ;
88
+
89
+ gulp . task ( 'serve' , [ 'sass' ] , function ( ) {
90
+ browserSync . init ( {
91
+ server : "src/"
92
+ } ) ;
93
+ //Слежение
94
+ gulp . watch ( paths . styles . watch , [ 'sass' ] ) ;
95
+ gulp . watch ( paths . html . watch ) . on ( 'change' , browserSync . reload ) ;
96
+ gulp . watch ( paths . images . src ) . on ( 'change' , browserSync . reload ) ;
97
+ } ) ;
98
+ //Компилируем scss в css + автопрефиксер
99
+ gulp . task ( 'sass' , function ( ) {
100
+ return gulp
101
+ . src ( paths . styles . src )
102
+ . pipe ( plumber ( ) )
103
+ . pipe ( sass ( ) . on ( 'error' , sass . logError ) )
104
+ . pipe ( autoprefixer ( {
105
+ browsers : [ 'last 2 versions' ] ,
106
+ cascade : false
107
+ } ) )
108
+ . pipe ( concatCss ( "main.css" ) )
109
+ . pipe ( gulp . dest ( 'src/' ) )
110
+ . pipe ( browserSync . stream ( ) ) ;
111
+ } ) ;
112
+ //Минимизируем css
113
+ gulp . task ( 'mincss' , function ( ) {
114
+ return gulp
115
+ . src ( 'src/main.css' )
116
+ . pipe ( plumber ( ) )
117
+ . pipe ( rename ( { suffix : ".min" } ) )
118
+ . pipe ( cleanCSS ( ) )
119
+ . pipe ( gulp . dest ( paths . styles . dest ) ) ;
120
+ } )
121
+ //Минимизируем js
122
+ gulp . task ( 'minjs' , function ( ) {
123
+ return gulp
124
+ . src ( 'src/scripts/main.js' )
125
+ . pipe ( plumber ( ) )
126
+ . pipe ( rename ( { suffix : ".min" } ) )
127
+ . pipe ( uglify ( ) )
128
+ . pipe ( gulp . dest ( paths . scripts . dest ) ) ;
129
+ } )
130
+ //Минимизируем svg
131
+ gulp . task ( 'minsvg' , function ( ) {
132
+ return gulp
133
+ . src ( 'src/images/icons/check.svg' )
134
+ . pipe ( plumber ( ) )
135
+ . pipe ( rename ( { suffix : ".min" } ) )
136
+ . pipe ( svgmin ( ) )
137
+ . pipe ( gulp . dest ( 'dist/images/icons/' ) ) ;
138
+ } )
139
+ gulp . task ( 'min' , [ 'mincss' , 'minjs' ] ) ;
140
+
141
+ //Запуск сборки
142
+ gulp . task ( 'build' , [ 'clean' , 'serve' , 'html' , 'stylesNlz' , 'stylesBoot' , 'minsvg' , 'fonts' , 'scripts' , 'images' , 'min' ] ) ;
143
+ //Запуск default
144
+ gulp . task ( 'default' , [ 'build' ] ) ;
0 commit comments