-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathgulpfile.js
109 lines (91 loc) · 2.57 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
'use strict';
var gulp = require('gulp');
var del = require('del');
var runSequence = require('run-sequence');
var browserSync = require('browser-sync');
var gulpLoadPlugins = require('gulp-load-plugins');
var lazypipe = require('lazypipe');
var $ = gulpLoadPlugins();
var reload = browserSync.reload;
var pkg = require('./package.json');
var today = $.util.date('dd-mm-yyyy HH:MM');
var browserSyncConfigs = {
notify: false,
// Disable open automatically when Browsersync starts.
open: false,
server: ['./'],
port: 3000
};
var banner = [
'/*!',
' * Credit Card Example',
' * Version ' + pkg.version + ' (' + today + ')',
' * Licensed under ' + pkg.license,
' * Copyright 2013-' + $.util.date('yyyy') + ' ' + pkg.author,
' */\n\n'
].join('\n');
gulp.task('styles:lint', cb => {
return gulp.src([
'src/**/*.scss'
])
.pipe($.scssLint())
.pipe(browserSync.active ? $.util.noop() : $.scssLint.failReporter('E'));
});
gulp.task('styles', ['styles:lint'], () => {
const AUTOPREFIXER_BROWSERS = [
'ie >= 10',
'ie_mob >= 10',
'ff >= 33',
'chrome >= 36',
'safari >= 7',
'opera >= 26',
'ios >= 7',
'android >= 4.4',
'bb >= 10'
];
const stylesMinChannel = lazypipe()
.pipe($.cssnano, {discardComments: {removeAll: true}})
.pipe($.rename, {suffix: '.min'})
.pipe($.header, banner)
.pipe(gulp.dest, 'dist/css');
return gulp.src([
'src/styles/**/*.scss'
])
.pipe($.sass({precision: 10}).on('error', $.sass.logError))
.pipe($.autoprefixer(AUTOPREFIXER_BROWSERS))
.pipe($.header(banner))
.pipe(gulp.dest('dist/css'))
.pipe(stylesMinChannel());
});
gulp.task('scripts:lint', cb => {
return gulp.src('src/scripts/**/*.js')
.pipe($.eslint())
.pipe($.eslint.format())
.pipe(browserSync.active ? $.util.noop() : $.eslint.failOnError());
});
gulp.task('scripts', ['scripts:lint'], () => {
const scriptsMinChannel = lazypipe()
.pipe($.uglify)
.pipe($.rename, {suffix: '.min'})
.pipe($.header, banner)
.pipe(gulp.dest, 'dist/js/');
return gulp.src('src/scripts/**/*.js')
.pipe($.babel())
.pipe($.header(banner))
.pipe(gulp.dest('dist/js'))
.pipe(scriptsMinChannel());
});
gulp.task('clean:dist', () => del(['dist/*'], {dot: true}));
gulp.task('build', cb =>
runSequence(
['clean:dist'],
['styles', 'scripts'],
cb
)
);
gulp.task('serve', () => {
browserSync(browserSyncConfigs);
gulp.watch(['src/styles/**/*.scss'], ['styles', reload]);
gulp.watch(['src/scripts/**/*.js'], ['scripts', reload]);
gulp.watch(['index.html'], reload);
});