-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathgulpfile.js
106 lines (97 loc) · 2.9 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
/**
* Base constants
*/
const { watch, series, src, dest } = require( 'gulp' );
const gulp = require( 'gulp' );
const sort = require('gulp-sort');
const pump = require( 'pump' );
const wpPot = require( 'gulp-wp-pot' );
/**
* SCSS
*/
const postcss = require( 'gulp-postcss' );
const sass = require( 'gulp-sass' );
const autoprefixer = require( 'autoprefixer' );
const postcssFlexbugsFixes = require( 'postcss-flexbugs-fixes' );
const postcssImport = require( 'postcss-import' );
const cssNano = require( 'cssnano' );
function style( cb ) {
return pump(
[
src( 'src/assets/sass/**/*.scss', { sourcemaps: true } ),
sass().on( 'error', sass.logError ),
postcss(
[
autoprefixer,
postcssFlexbugsFixes,
postcssImport,
cssNano(
{
preset: [
'default',
{
normalizeWhitespace:
process.env.NODE_ENV === 'production',
},
],
}
),
]
),
dest( './src/assets/css/', { sourcemaps: '.' } ),
],
cb
);
}
/**
* JS
* Handled by webpack
*/
const webpack = require( 'webpack' );
const webpackStream = require( 'webpack-stream' );
function script( cb ) {
pump(
[
src( 'src/assets/js/*.js' ),
webpackStream(
{ config: require( './webpack.config.babel.js' ) },
webpack
),
dest( './src/assets/js/' ),
],
cb
);
}
/**
* General tasks
* watch and node_env setters
*/
function watchfiles() {
setDevEnv();
watch( 'src/assets/sass/**/*.scss', style );
watch( 'src/assets/js/bco-checkout.js', script );
}
function setDevEnv() {
process.env.NODE_ENV = 'development';
}
function setProdEnv( cb ) {
process.env.NODE_ENV = 'production';
cb();
}
gulp.task('makePOT', function () {
return gulp.src('**/*.php')
.pipe(sort())
.pipe(wpPot({
domain: 'billmate-checkout-for-woocommerce',
destFile: 'src/languages/billmate-checkout-for-woocommerce.pot',
package: 'billmate-checkout-for-woocommerce',
bugReport: 'http://krokedil.se',
lastTranslator: 'Krokedil <[email protected]>',
team: 'Krokedil <[email protected]>'
}))
.pipe(gulp.dest('src/languages/billmate-checkout-for-woocommerce.pot'));
});
exports.style = style;
exports.script = script;
exports.watch = watchfiles;
exports.default = series( setProdEnv, style, script );