-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathgulpfile.js
92 lines (84 loc) · 1.74 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
const gulp = require( 'gulp' );
const nodeSass = require( 'sass' );
const gulpSass = require( 'gulp-sass' );
const sassGlob = require( 'gulp-sass-glob' );
const plumber = require( 'gulp-plumber' );
const prefix = require( 'gulp-autoprefixer' );
const webpack = require( 'webpack-stream' );
const rename = require( 'gulp-rename' );
const named = require( 'vinyl-named' );
const sass = gulpSass( nodeSass );
/**
* Create styles file from sources/
*/
gulp.task( 'styles', ( done ) => {
gulp.src( 'src/styles/*.scss' )
.pipe( plumber() )
.pipe(
sassGlob( {
allowEmpty: true,
} )
)
.pipe(
sass( {
errLogToConsole: true,
} )
)
.pipe( prefix() )
.pipe( gulp.dest( 'assets/styles/' ) );
done();
} );
/**
* Create scripts file from sources.
*/
gulp.task( 'scripts', ( done ) => {
gulp.src( 'src/scripts/*.js' )
.pipe( plumber() )
.pipe( named() )
.pipe(
webpack( {
config: {
mode: 'production',
optimization: {
minimize: false,
},
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules)/,
use: {
loader: 'babel-loader',
options: {
presets: [ '@wordpress/default' ],
},
},
},
],
},
},
} )
)
.pipe(
rename( ( file ) => {
file.basename = file.basename;
file.extname = '.js';
} )
)
.pipe( gulp.dest( 'assets/scripts/' ) );
done();
} );
/**
* Watch soruces and update styles and scripts
*/
gulp.task( 'watch', () => {
gulp.watch( 'src/**/*', gulp.series( 'styles', 'scripts' ) );
} );
/**
* Build static files
*/
gulp.task( 'build', gulp.parallel( 'styles', 'scripts' ) );
/**
* Start development handler
*/
gulp.task( 'start', gulp.series( 'build', 'watch' ) );