-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgulpfile.js
More file actions
99 lines (90 loc) · 2.48 KB
/
gulpfile.js
File metadata and controls
99 lines (90 loc) · 2.48 KB
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
const gulp = require( 'gulp' ),
$ = require( 'gulp-load-plugins' )(),
webpack = require( 'webpack-stream' ),
webpackBundle = require( 'webpack' ),
named = require( 'vinyl-named' );
// Sass tasks
gulp.task('sass', function () {
return gulp.src(['./src/scss/**/*.scss'])
.pipe($.plumber({
errorHandler: $.notify.onError('<%= error.message %>')
}))
.pipe($.sassGlob())
.pipe($.sourcemaps.init())
.pipe($.sass({
errLogToConsole: true,
outputStyle: 'compressed',
sourceComments: false,
sourcemap: true,
includePaths: [
'./src/scss'
]
}))
.pipe($.autoprefixer({
grid: true,
browsers: ['last 2 versions', 'ie 11']
}))
.pipe($.sourcemaps.write('./map'))
.pipe(gulp.dest('./assets/css'));
});
// Package js.
gulp.task( 'js', function() {
const tmp = {};
return gulp.src([ './src/js/**/*.js' ])
.pipe( $.plumber({
errorHandler: $.notify.onError( '<%= error.message %>' )
}) )
.pipe( named() )
.pipe( $.rename( function( path ) {
tmp[path.basename] = path.dirname;
}) )
.pipe( webpack({
mode: 'production',
devtool: 'source-map',
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: [
[
'@babel/preset-env',
{ 'useBuiltIns': 'usage' }
]
],
plugins: [ '@babel/plugin-transform-react-jsx' ]
}
}
}
]
}
}, webpackBundle ) )
.pipe( $.rename( function( path ) {
if ( tmp[path.basename]) {
path.dirname = tmp[path.basename];
} else if ( '.map' === path.extname && tmp[path.basename.replace( /\.js$/, '' )]) {
path.dirname = tmp[path.basename.replace( /\.js$/, '' )];
}
return path;
}) )
.pipe( gulp.dest( './assets/js' ) );
});
// ES Lint
gulp.task( 'eslint', function() {
return gulp.src([ 'src/**/*.js' ])
.pipe( $.eslint({ useEslintrc: true }) )
.pipe( $.eslint.format() );
});
// watch
gulp.task( 'watch', function() {
// Handle JS
gulp.watch([ 'src/js/**/*.js' ], gulp.parallel( 'js', 'eslint' ) );
gulp.watch( [ 'src/scss/**/*.scss' ], gulp.series( 'sass' ) );
});
// Build
gulp.task( 'build', gulp.parallel( 'js', 'eslint', 'sass' ) );
// Default Tasks
gulp.task( 'default', gulp.series( 'watch' ) );