-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
107 lines (98 loc) · 3.71 KB
/
gulpfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
var gulp = require('gulp');
clean = require('gulp-clean'); //Очисщает директори
pug = require('gulp-pug'); //Переводит pug в html
gulpPugBeautify = require('gulp-pug-beautify'); //Причесывает Pug
replace = require('gulp-replace');
debug = require('gulp-debug'); //Показывает пути дебаженых фалов
watch = require('gulp-watch'); //Отслеживает изменения в директории
sass = require('gulp-sass'); //Переводит sass в css
notify = require('gulp-notify'); //Уведомляет об ошибках в коде
autoprefixer = require('gulp-autoprefixer'); //Ставит автопрефиксы
rename = require('gulp-rename'); //Переименовывает файл
plumber = require('gulp-plumber');
sourcemaps = require('gulp-sourcemaps');
concat = require('gulp-concat');
mincss = require('gulp-clean-css');
browsersync = require('browser-sync').create(); //Забускает сервер
csscomb = require('gulp-csscomb');
//Сервер
gulp.task('serve', function () {
return new Promise((res, rej) => {
browsersync.init({
server: './dist/',
// tunnel: true,
// port: 9000
});
res();
});
});
//Clean
gulp.task('clean', function () {
return gulp.src('dist/*', {read: false})
.pipe(clean());
});
//dist/index.html
gulp.task('pug', function buildHTML() {
return gulp.src('app/*.pug') //Обрабатываем файлы в этой директории
.pipe(pug({pretty: true}))
.pipe(gulpPugBeautify({ omit_empty: true }))
.pipe(replace('../dist/'))
.pipe(gulp.dest('./dist/'))
.pipe(debug({'title': 'html'}))
.on('end', browsersync.reload)
});
//dist/main.css
gulp.task('sass', function(){
return gulp.src(['./app/*.{css,sass,scss}'])
.pipe( sass().on( 'error', notify.onError(
{
message: '<%= error.message %>',
title : 'Кэп! Твой код пошел по пизде!'
} )))
.pipe(sass())
.pipe(autoprefixer(['last 15 versions', '> 1%', 'ie 8', 'ie 7'], { cascade: true }))
.pipe(concat('main.css'))
.pipe(gulp.dest('./dist/assets/css'))
.pipe(mincss({compatibility: 'ie8', level: {1: {specialComments: 0}}}))
.pipe(concat('main.css'))
.pipe(replace('../../dist/', '../'))
.pipe(plumber.stop())
.pipe(sourcemaps.write('./maps/'))
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest('./dist/assets/css'))
.on('end', browsersync.reload);
});
//webfonts
gulp.task('webfonts', function(){
return gulp.src(['./app/*.ttf'])
.pipe(gulp.dest('./dist/assets/webfonts'))
.on('end', browsersync.reload);
});
//Js
gulp.task('js', function(){
return gulp.src(['./app/*.js'])
.pipe(gulp.dest('./dist/assets/js'))
.on('end', browsersync.reload);
});
//images
gulp.task('img', function(){
return gulp.src(['./app/*.{png,jpg,jepg}'])
.pipe(gulp.dest('./dist/images'))
.on('end', browsersync.reload);
});
//watch
gulp.task('watch', function() {
return new Promise((res, rej) => {
watch(['./app/**/*.pug','./src/index.pug'], gulp.series('pug'));
watch('./app/**/*.{sass,css}', gulp.series('sass'));
watch('.app/**/*.js', gulp.series('js'));
watch('./app/**/*.ttf', gulp.series('webfonts'));
watch('.app/**/*.{png,jpg,jepg}', gulp.series('img'));
res();
});
});
gulp.task('default',
gulp.series('clean',
gulp.parallel('pug', 'sass', 'js', 'webfonts', 'img'),
gulp.parallel('watch'),
));