11const gulp = require ( 'gulp' ) ;
2- const webpack = require ( 'webpack' ) ;
3- const webpackStream = require ( 'webpack-stream' ) ;
42const shell = require ( 'gulp-shell' ) ;
5- const electronConnect = require ( 'electron-connect' ) ;
6- const mainWebpackConfig = require ( './source/main/webpack.config' ) ;
7- const rendererWebpackConfig = require ( './source/renderer/webpack.config' ) ;
8-
9- // Setup electron-connect server to start the app in development mode
10- let electronServer ;
11- const electronServerAgs = [ '--inspect=9229' ] ;
12- // Gulp input sources for main and renderer compilation
13- const mainInputSource = ( ) => gulp . src ( 'source/main/index.ts' ) ;
14- const rendererInputSource = ( ) => gulp . src ( 'source/renderer/index.ts' ) ;
15- // Webpack watch configs
16- const mainWebpackWatchConfig = Object . assign ( { } , mainWebpackConfig , {
17- watch : true ,
18- } ) ;
19- const rendererWebpackWatchConfig = Object . assign ( { } , rendererWebpackConfig , {
20- watch : true ,
21- } ) ;
22- // Gulp output destinations for main and renderer compilation
23- const mainOutputDestination = ( ) => gulp . dest ( 'dist/main' ) ;
24- const rendererOutputDestination = ( ) => gulp . dest ( 'dist/renderer' ) ;
25-
26- /**
27- * Creates an electron-connect server instance that enables
28- * us to control our app (restarting / reloading)
29- * @param env - electron app environment
30- * @param args - additional spawn options
31- */
32- const createElectronServer = ( env , args = [ ] ) => {
33- electronServer = electronConnect . server . create ( {
34- spawnOpt : {
35- env : Object . assign ( { } , process . env , env ) ,
36- args,
37- } ,
38- } ) ;
39- } ;
40-
41- const buildMain = ( ) => ( ) =>
42- mainInputSource ( )
43- . pipe ( webpackStream ( mainWebpackConfig , webpack ) )
44- . pipe ( mainOutputDestination ( ) ) ;
45-
46- const buildMainWatch = ( ) => ( done ) =>
47- mainInputSource ( )
48- . pipe (
49- webpackStream ( mainWebpackWatchConfig , webpack , ( ) => {
50- // Restart app every time after main script has been re-compiled
51- electronServer . restart ( electronServerAgs ) ;
52- done ( ) ;
53- } )
54- )
55- . pipe ( mainOutputDestination ( ) ) ;
56-
57- const buildRenderer = ( ) => ( ) =>
58- rendererInputSource ( )
59- . pipe ( webpackStream ( rendererWebpackConfig , webpack ) )
60- . pipe ( rendererOutputDestination ( ) ) ;
61-
62- const buildRendererWatch = ( ) => ( done ) =>
63- rendererInputSource ( )
64- . pipe (
65- webpackStream ( rendererWebpackWatchConfig , webpack , ( ) => {
66- if ( electronServer ) {
67- // Reload app every time after renderer script has been re-compiled
68- electronServer . reload ( ) ;
69- }
70- done ( ) ;
71- } )
72- )
73- . pipe ( rendererOutputDestination ( ) ) ;
74-
75- gulp . task (
76- 'clear:cache' ,
77- shell . task ( 'rimraf ./node_modules/.cache && rimraf .cache-loader' )
78- ) ;
79-
80- gulp . task ( 'clean:dist' , shell . task ( 'rimraf ./dist' ) ) ;
81-
82- gulp . task ( 'server:start' , ( done ) => {
83- electronServer . start ( electronServerAgs ) ;
84- done ( ) ;
85- } ) ;
86-
87- gulp . task ( 'server:create:dev' , ( done ) => {
88- createElectronServer ( {
89- NODE_ENV : process . env . NODE_ENV ,
90- XCURSOR_PATH : '/usr/share/icons' || 'development' ,
91- } ) ;
92- done ( ) ;
93- } ) ;
94-
95- gulp . task ( 'server:create:debug' , ( done ) => {
96- createElectronServer ( {
97- NODE_ENV : process . env . NODE_ENV ,
98- XCURSOR_PATH : '/usr/share/icons' || 'development' ,
99- } ) ;
100- done ( ) ;
101- } ) ;
102-
103- gulp . task ( 'build:main' , buildMain ( ) ) ;
104-
105- gulp . task ( 'build:main:watch' , buildMainWatch ( ) ) ;
106-
107- gulp . task ( 'build:renderer:html' , ( ) =>
108- gulp . src ( 'source/renderer/index.html' ) . pipe ( gulp . dest ( 'dist/renderer/' ) )
109- ) ;
110-
111- gulp . task ( 'build:renderer:assets' , buildRenderer ( ) ) ;
112-
113- gulp . task (
114- 'build:renderer' ,
115- gulp . series ( 'build:renderer:html' , 'build:renderer:assets' )
116- ) ;
117-
118- gulp . task ( 'build:renderer:watch' , buildRendererWatch ( ) ) ;
119-
120- gulp . task ( 'build' , gulp . series ( 'clean:dist' , 'build:main' , 'build:renderer' ) ) ;
1213
1224gulp . task ( 'prepare:themes:utils' , ( ) =>
1235 gulp
@@ -169,20 +51,7 @@ gulp.task(
16951 )
17052) ;
17153
172- gulp . task ( 'typedef:sass' , shell . task ( 'yarn typedef:sass --watch' ) ) ;
173-
174- gulp . task (
175- 'build:watch' ,
176- gulp . series (
177- 'clean:dist' ,
178- 'server:create:dev' ,
179- 'build:renderer:html' ,
180- process . argv . includes ( '--disable-electron-reload' )
181- ? 'build:main'
182- : 'build:main:watch' ,
183- 'build:renderer:watch'
184- )
185- ) ;
54+ gulp . task ( 'clean:dist' , shell . task ( 'rimraf ./dist' ) ) ;
18655
18756gulp . task ( 'build:themes' , gulp . series ( 'clean:dist' , 'prepare:themes' ) ) ;
18857
@@ -193,33 +62,6 @@ gulp.task(
19362 )
19463) ;
19564
196- gulp . task ( 'test:e2e:watch' , gulp . series ( 'build:watch' , 'test:e2e:nodemon' ) ) ;
197-
198- gulp . task ( 'purge:translations' , shell . task ( 'rimraf ./translations/messages' ) ) ;
199-
200- gulp . task ( 'electron:inspector' , shell . task ( 'yarn electron:inspector' ) ) ;
201-
202- gulp . task (
203- 'start' ,
204- shell . task (
205- `cross-env NODE_ENV=${ process . env . NODE_ENV || 'production' } electron ./`
206- )
207- ) ;
208-
209- gulp . task (
210- 'dev' ,
211- gulp . parallel (
212- gulp . series ( 'server:create:dev' , 'build:watch' , 'server:start' ) ,
213- gulp . series ( 'typedef:sass' )
214- )
215- ) ;
65+ gulp . task ( 'e2e:watch' , gulp . series ( 'clean:dist' , shell . task ( 'yarn dev' ) ) ) ;
21666
217- gulp . task (
218- 'debug' ,
219- gulp . series (
220- 'server:create:debug' ,
221- 'build:watch' ,
222- 'server:start' ,
223- 'electron:inspector'
224- )
225- ) ;
67+ gulp . task ( 'test:e2e:watch' , gulp . series ( 'e2e:watch' , 'test:e2e:nodemon' ) ) ;
0 commit comments