-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
100 lines (88 loc) · 2.35 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
const gulp = require( 'gulp' );
const fs = require( 'fs' );
const $ = require( 'gulp-load-plugins' )();
const stream = require( 'event-stream' );
const pngquant = require( 'imagemin-pngquant' );
// Sass
gulp.task( 'sass', () => {
return gulp.src( [
'./src/scss/**/*.scss'
] )
.pipe( $.plumber( {
errorHandler: $.notify.onError( '<%= error.message %>' )
} ) )
.pipe( $.sourcemaps.init( { loadMaps: true } ) )
.pipe( $.sassBulkImport() )
.pipe( $.sass( {
errLogToConsole: true,
outputStyle: 'compressed',
includePaths: [
'./src/scss'
]
} ) )
.pipe( $.autoprefixer( { browsers: [ 'last 2 version', '> 5%' ] } ) )
.pipe( $.sourcemaps.write( './map' ) )
.pipe( gulp.dest( './assets/css' ) );
} );
// Minify All
gulp.task( 'js', () => {
return gulp.src( [ './src/js/**/*.js' ] )
.pipe( $.plumber( {
errorHandler: $.notify.onError( '<%= error.message %>' )
} ) )
.pipe( $.sourcemaps.init( {
loadMaps: true
} ) )
.pipe( $.babel( {
presets: [ 'env' ]
} ) )
.pipe( $.uglify( {
output: {
comments: /^!/
}
} ) )
.on( 'error', $.util.log )
.pipe( $.sourcemaps.write( './map' ) )
.pipe( gulp.dest( './assets/js/' ) );
} );
// JS Hint
gulp.task( 'eslint', () => {
return gulp.src( [ 'src/**/*.js' ] )
.pipe( $.eslint( { useEslintrc: true } ) )
.pipe( $.eslint.format() );
} );
// Build modernizr
gulp.task( 'copylib', () => {
return stream.merge(
gulp.src( [
'node_modules/select2-bootstrap4-theme/dist/select2-bootstrap4.min.css',
'node_modules/select2/dist/css/select2.min.css',
] )
.pipe( gulp.dest( 'assets/css' ) ),
gulp.src( 'node_modules/select2/dist/js/select2.min.js' )
.pipe( gulp.dest( 'assets/js' ) )
);
} );
// Image min
gulp.task( 'imagemin', () => {
return gulp.src( './src/img/**/*' )
.pipe( $.imagemin( {
progressive: true,
svgoPlugins: [ { removeViewBox: false } ],
use: [ pngquant() ]
} ) )
.pipe( gulp.dest( './assets/img' ) );
} );
// watch
gulp.task( 'watch', () => {
// Make SASS.
gulp.watch( 'src/scss/**/*.scss', gulp.task( 'sass' ) );
// JS.
gulp.watch( [ 'src/js/**/*.js' ], gulp.parallel( 'js', 'eslint' ) );
// Minify Image.
gulp.watch( 'src/img/**/*.{jpg,jpeg,gif,png}', gulp.task( 'imagemin' ) );
} );
// Build
gulp.task( 'build', gulp.parallel( 'eslint', 'js', 'sass', 'imagemin' ) );
// Default Tasks
gulp.task( 'default', gulp.task( 'watch' ) );