forked from Automattic/sensei
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
133 lines (116 loc) · 3.4 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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/* eslint-disable */
/**
* Gulp File
*
* 1) Make sure you have node and npm installed locally
*
* 2) Install all the modules from package.json:
* $ npm install
*
* 3) Run gulp to minify javascript and css using the 'gulp' command.
*
*/
var checktextdomain = require( 'gulp-checktextdomain' );
var del = require( 'del' );
var exec = require( 'child_process' ).exec;
var gulp = require( 'gulp' );
var sort = require( 'gulp-sort' );
var wpPot = require( 'gulp-wp-pot' );
var zip = require( 'gulp-zip' );
var process = require( 'process' );
function npm_run ( command ) {
var npmProcess = exec( `npm run ${command}` );
npmProcess.stdout.pipe( process.stdout );
npmProcess.stderr.pipe( process.stderr );
return npmProcess;
}
var paths = {
select2: [
'node_modules/select2/dist/css/select2.min.css',
'node_modules/select2/dist/js/select2.full.js',
'node_modules/select2/dist/js/select2.full.min.js'
],
packageContents: [
'assets/**/*',
'changelog.txt',
'CONTRIBUTING.md',
'LICENSE',
'dummy_data.xml',
'includes/**/*',
'lang/**/*',
'readme.txt',
'templates/**/*',
'uninstall.php',
'widgets/**/*',
'sensei-lms.php',
'wpml-config.xml',
],
packageDir: 'build/sensei-lms',
packageZip: 'build/sensei-lms.zip'
};
gulp.task( 'clean', gulp.series( function( cb ) {
return del( [
'assets/dist/**',
'assets/vendor/select2/**',
'build'
], cb );
} ) );
function buildWebpack () {
return npm_run( 'build' )
}
gulp.task( 'webpack', gulp.series( buildWebpack ) );
gulp.task( 'block-editor-assets', gulp.series( function( cb ) {
exec( 'npm run block-editor-assets', cb );
} ) );
gulp.task( 'pot', gulp.series( function() {
return gulp.src( [ '**/**.php', '!node_modules/**', '!vendor/**', '!build/**', '!tests/**' ] )
.pipe( sort() )
.pipe( wpPot( {
domain: 'sensei-lms',
bugReport: 'https://translate.wordpress.org/projects/wp-plugins/sensei-lms/'
} ) )
.pipe( gulp.dest( 'lang/sensei-lms.pot' ) );
} ) );
gulp.task( 'textdomain', gulp.series( function() {
return gulp.src( [ '**/*.php', '!node_modules/**', '!build/**' , '!vendor/**' ] )
.pipe( checktextdomain( {
text_domain: 'sensei-lms',
keywords: [
'__:1,2d',
'_e:1,2d',
'_x:1,2c,3d',
'esc_html__:1,2d',
'esc_html_e:1,2d',
'esc_html_x:1,2c,3d',
'esc_attr__:1,2d',
'esc_attr_e:1,2d',
'esc_attr_x:1,2c,3d',
'_ex:1,2c,3d',
'_n:1,2,4d',
'_nx:1,2,4c,5d',
'_n_noop:1,2,3d',
'_nx_noop:1,2,3c,4d'
]
} ) );
} ) );
gulp.task( 'vendor', function() {
return gulp.src( paths.select2 )
.pipe( gulp.dest( 'assets/vendor/select2' ) );
} );
gulp.task( 'test', gulp.series( function npm_test ( ) {
npm_run( 'test' )
} ) );
gulp.task( 'build', gulp.series( 'test', 'clean', 'webpack', 'vendor' ) );
gulp.task( 'build-unsafe', gulp.series( 'clean', 'webpack', 'vendor' ) );
gulp.task( 'copy-package', function() {
return gulp.src( paths.packageContents, { base: '.' } )
.pipe( gulp.dest( paths.packageDir ) );
} );
gulp.task( 'zip-package', function() {
return gulp.src( paths.packageDir + '/**/*', { base: paths.packageDir + '/..' } )
.pipe( zip( paths.packageZip ) )
.pipe( gulp.dest( '.' ) );
} );
gulp.task( 'package', gulp.series( 'build', 'copy-package', 'zip-package' ) );
gulp.task( 'package-unsafe', gulp.series( 'build-unsafe', 'copy-package', 'zip-package' ) );
gulp.task( 'default', gulp.series( 'build' ) );