3
3
* @copyright : http://www.divio.ch
4
4
*/
5
5
/* eslint-disable no-console */
6
-
6
+ /*jshint esversion: 6 */
7
7
'use strict' ;
8
8
9
9
// #############################################################################
10
10
// #IMPORTS#
11
- var gulp = require ( 'gulp' ) ;
12
- var autoprefixer = require ( 'autoprefixer' ) ;
13
- var postcss = require ( 'gulp-postcss' ) ;
14
- var gulpif = require ( 'gulp-if' ) ;
15
- var sass = require ( 'gulp-sass' ) ;
16
- var iconfont = require ( 'gulp-iconfont' ) ;
17
- var iconfontCss = require ( 'gulp-iconfont-css' ) ;
18
- var sourcemaps = require ( 'gulp-sourcemaps' ) ;
19
- var minifyCss = require ( 'gulp-minify-css' ) ;
20
- var eslint = require ( 'gulp-eslint' ) ;
21
- var integrationTests = require ( 'djangocms-casper-helpers/gulp' ) ;
22
- var webpack = require ( 'webpack' ) ;
23
- var PluginError = require ( 'plugin-error' ) ;
24
-
25
- var argv = require ( 'minimist' ) ( process . argv . slice ( 2 ) ) ;
11
+ const gulp = require ( 'gulp' ) ;
12
+ const gutil = require ( 'gulp-util' ) ;
13
+ const autoprefixer = require ( 'autoprefixer' ) ;
14
+ const postcss = require ( 'gulp-postcss' ) ;
15
+ const browserSync = require ( 'browser-sync' ) . create ( ) ;
16
+ const gulpif = require ( 'gulp-if' ) ;
17
+ const iconfont = require ( 'gulp-iconfont' ) ;
18
+ const iconfontCss = require ( 'gulp-iconfont-css' ) ;
19
+ const log = require ( 'fancy-log' ) ;
20
+ const sass = require ( 'gulp-sass' ) ( require ( 'sass' ) ) ;
21
+ const sourcemaps = require ( 'gulp-sourcemaps' ) ;
22
+ const minifyCss = require ( 'gulp-clean-css' ) ;
23
+ const eslint = require ( 'gulp-eslint' ) ;
24
+ const webpack = require ( 'webpack' ) ;
25
+ const integrationTests = require ( 'djangocms-casper-helpers/gulp' ) ;
26
+
27
+ const argv = require ( 'minimist' ) ( process . argv . slice ( 2 ) ) ; // eslint-disable-line
26
28
27
29
// #############################################################################
28
30
// #SETTINGS#
29
- var options = {
31
+ const options = {
30
32
debug : argv . debug
31
33
} ;
32
- var PROJECT_ROOT = __dirname ;
33
- var PROJECT_PATH = {
34
+ const PROJECT_ROOT = __dirname ;
35
+ const PROJECT_PATH = {
34
36
sass : PROJECT_ROOT + '/djangocms_admin_style/sass' ,
35
37
css : PROJECT_ROOT + '/djangocms_admin_style/static/djangocms_admin_style/css' ,
36
38
js : PROJECT_ROOT + '/djangocms_admin_style/static/djangocms_admin_style/js' ,
37
39
tests : PROJECT_ROOT + '/tests/frontend' ,
38
40
icons : PROJECT_ROOT + '/djangocms_admin_style/static/djangocms_admin_style/fonts'
39
41
} ;
40
42
41
- var PROJECT_PATTERNS = {
43
+ const PROJECT_PATTERNS = {
42
44
sass : [ PROJECT_PATH . sass + '/**/*.{scss,sass}' ] ,
43
45
icons : [ PROJECT_PATH . icons + '/src/*.svg' ] ,
44
46
js : [
@@ -47,11 +49,10 @@ var PROJECT_PATTERNS = {
47
49
'!' + PROJECT_PATH . js + '/**/jquery.*.js' ,
48
50
'!' + PROJECT_PATH . js + '/libs/**/*.js' ,
49
51
'!' + PROJECT_PATH . js + '/dist/**/*.js' ,
50
- 'gulpfile.js'
51
52
]
52
53
} ;
53
54
54
- var INTEGRATION_TESTS = [
55
+ const INTEGRATION_TESTS = [
55
56
[
56
57
'loginAdmin' ,
57
58
'dashboard' ,
@@ -62,12 +63,13 @@ var INTEGRATION_TESTS = [
62
63
63
64
// #############################################################################
64
65
// #TASKS#
65
- gulp . task ( 'sass' , function ( ) {
66
- gulp . src ( PROJECT_PATTERNS . sass )
66
+ const css = ( ) => {
67
+ return (
68
+ gulp . src ( PROJECT_PATTERNS . sass )
67
69
. pipe ( gulpif ( options . debug , sourcemaps . init ( ) ) )
68
70
. pipe ( sass ( ) )
69
71
. on ( 'error' , function ( error ) {
70
- console . log ( 'Error (' + error . plugin + '): ' + error . messageFormatted ) ;
72
+ log . error ( 'Error (' + error . plugin + '): ' + error . messageFormatted ) ;
71
73
} )
72
74
. pipe (
73
75
postcss ( [
@@ -82,11 +84,13 @@ gulp.task('sass', function () {
82
84
} )
83
85
)
84
86
. pipe ( gulpif ( options . debug , sourcemaps . write ( ) ) )
85
- . pipe ( gulp . dest ( PROJECT_PATH . css ) ) ;
86
- } ) ;
87
+ . pipe ( gulp . dest ( PROJECT_PATH . css ) )
88
+ ) ;
89
+ } ;
87
90
88
- gulp . task ( 'icons' , function ( ) {
89
- gulp . src ( PROJECT_PATTERNS . icons )
91
+ const icons = ( ) => {
92
+ return (
93
+ gulp . src ( PROJECT_PATTERNS . icons )
90
94
. pipe (
91
95
iconfontCss ( {
92
96
fontName : 'django-admin-iconfont' ,
@@ -102,64 +106,72 @@ gulp.task('icons', function () {
102
106
} )
103
107
)
104
108
. on ( 'glyphs' , function ( glyphs , opts ) {
105
- console . log ( glyphs , opts ) ;
109
+ log ( glyphs , opts ) ;
106
110
} )
107
- . pipe ( gulp . dest ( PROJECT_PATH . icons ) ) ;
108
- } ) ;
111
+ . pipe ( gulp . dest ( PROJECT_PATH . icons ) )
112
+ )
113
+ } ;
114
+
115
+ const lint = ( ) => {
116
+ return (
117
+ gulp
118
+ . src ( PROJECT_PATTERNS . js )
119
+ . pipe ( eslint ( ) )
120
+ . pipe ( eslint . format ( ) )
121
+ . pipe ( eslint . failAfterError ( ) )
122
+ )
123
+ } ;
109
124
110
- gulp . task ( 'lint' , [ 'lint:javascript' ] ) ;
111
- gulp . task ( 'lint:javascript' , function ( ) {
112
- // DOCS: http://eslint.org
113
- return gulp . src ( PROJECT_PATTERNS . js ) . pipe ( eslint ( ) ) . pipe ( eslint . format ( ) ) . pipe ( eslint . failAfterError ( ) ) ;
114
- } ) ;
115
125
116
- var webpackBundle = function ( opts ) {
117
- var webpackOptions = opts || { } ;
126
+ const webpackBundle = function ( opts ) {
127
+ const webpackOptions = opts || { } ;
118
128
119
129
webpackOptions . PROJECT_PATH = PROJECT_PATH ;
120
130
webpackOptions . debug = options . debug ;
121
131
122
132
return function ( done ) {
123
- var config = require ( './webpack.config' ) ( webpackOptions ) ;
133
+ const config = require ( './webpack.config' ) ( webpackOptions ) ;
124
134
125
135
webpack ( config , function ( err , stats ) {
126
136
if ( err ) {
127
137
throw new PluginError ( 'webpack' , err ) ;
128
138
}
129
- console . log ( '[webpack]' , stats . toString ( { colors : true } ) ) ;
139
+ log ( '[webpack]' , stats . toString ( { colors : true } ) ) ;
130
140
if ( typeof done !== 'undefined' && ( ! opts || ! opts . watch ) ) {
131
141
done ( ) ;
132
142
}
133
143
} ) ;
134
144
} ;
135
145
} ;
136
146
137
- gulp . task ( 'bundle:watch' , webpackBundle ( { watch : true } ) ) ;
138
- gulp . task ( 'bundle' , webpackBundle ( ) ) ;
139
-
140
147
// #######################################
141
148
// #TESTS#
142
- gulp . task ( 'tests' , [ 'tests:integration' ] ) ;
143
149
144
- // gulp tests:integration [--clean] [--screenshots] [--tests=loginAdmin,toolbar]
145
- gulp . task (
146
- 'tests:integration' ,
150
+ const testsIntegration = ( done ) => {
147
151
integrationTests ( {
148
152
tests : INTEGRATION_TESTS ,
149
153
pathToTests : PROJECT_PATH . tests ,
150
154
argv : argv ,
151
155
dbPath : 'testdb.sqlite' ,
152
156
serverCommand : 'tests/settings-docker.py' ,
153
- logger : console . log . bind ( console )
154
- } )
155
- ) ;
157
+ logger : gutil . log . bind ( gutil ) ,
158
+ waitForMigrations : 5 // seconds
159
+ } ) ;
160
+ done ( ) ;
161
+ } ;
162
+
156
163
157
164
// #############################################################################
158
165
// #COMMANDS#
159
- gulp . task ( 'watch' , function ( ) {
160
- gulp . start ( 'bundle:watch' ) ;
161
- gulp . watch ( PROJECT_PATTERNS . sass , [ 'sass' ] ) ;
162
- gulp . watch ( PROJECT_PATTERNS . js , [ ' lint' ] ) ;
163
- } ) ;
166
+ const watchFiles = ( ) => {
167
+ browserSync . init ( ) ;
168
+ gulp . watch ( PROJECT_PATTERNS . sass , css ) ;
169
+ gulp . watch ( PROJECT_PATTERNS . js , lint ) ;
170
+ } ;
164
171
165
- gulp . task ( 'default' , [ 'sass' , 'lint' , 'watch' ] ) ;
172
+ gulp . task ( "sass" , css ) ;
173
+ gulp . task ( "icons" , icons ) ;
174
+ gulp . task ( "lint" , lint ) ;
175
+ gulp . task ( 'watch' , gulp . parallel ( watchFiles ) ) ;
176
+ gulp . task ( 'tests' , testsIntegration ) ;
177
+ gulp . task ( 'bundle' , webpackBundle ( ) ) ;
0 commit comments