@@ -2,6 +2,7 @@ const {src, dest, series, parallel, watch} = require('gulp');
22
33const fs = require ( 'fs' ) ;
44const path = require ( 'path' ) ;
5+ const httpProxy = require ( 'http-proxy' ) ;
56
67const g = {
78 gzip : require ( 'gulp-gzip' ) ,
@@ -14,7 +15,8 @@ const g = {
1415 clean : require ( 'gulp-clean' ) ,
1516 concat : require ( 'gulp-concat' ) ,
1617 mergeStream : require ( 'merge-stream' ) ,
17- manifest : require ( 'gulp-manifest3' )
18+ manifest : require ( 'gulp-manifest3' ) ,
19+ plumber : require ( 'gulp-plumber' )
1820// const htmlreplace = require('gulp-html-replace');
1921} ;
2022g . sass . compiler = require ( 'node-sass' ) ;
@@ -45,6 +47,7 @@ const config = {
4547function jsTask ( ) {
4648 return g . pipeline (
4749 src ( path . posix . join ( config . srcDir , '*.js' ) ) ,
50+ g . plumber ( ) ,
4851 g . concat ( 'app.js' ) ,
4952 dest ( config . distDir ) ,
5053 g . sourcemaps . init ( ) ,
@@ -57,6 +60,7 @@ function jsTask() {
5760function cssTask ( ) {
5861 return g . pipeline (
5962 src ( path . posix . join ( config . srcDir , '*.scss' ) ) ,
63+ g . plumber ( ) ,
6064 g . sourcemaps . init ( ) ,
6165 g . sass ( ) . on ( 'error' , g . sass . logError ) ,
6266 g . concat ( 'app.css' ) ,
@@ -70,6 +74,7 @@ function cssTask() {
7074function htmlTask ( ) {
7175 return g . pipeline (
7276 src ( path . posix . join ( config . srcDir , '*.html' ) ) ,
77+ g . plumber ( ) ,
7378 dest ( config . distDir ) ,
7479 g . htmlmin ( { collapseWhitespace : true } ) ,
7580 g . gzip ( { gzipOptions : { level : 9 } } ) ,
@@ -80,6 +85,7 @@ function htmlTask() {
8085function vendorJsTask ( ) {
8186 return g . pipeline (
8287 src ( path . posix . join ( config . vendorDir , '*.js' ) ) ,
88+ g . plumber ( ) ,
8389 g . sourcemaps . init ( ) ,
8490 g . concat ( 'vendor.js' ) ,
8591 dest ( config . distDir ) ,
@@ -93,6 +99,7 @@ function vendorJsTask() {
9399function vendorCssTask ( ) {
94100 return g . pipeline (
95101 src ( path . posix . join ( config . vendorDir , '*.css' ) ) ,
102+ g . plumber ( ) ,
96103 g . sourcemaps . init ( ) ,
97104 g . concat ( 'vendor.css' ) ,
98105 dest ( config . distDir ) ,
@@ -109,18 +116,21 @@ function copyTask() {
109116 path . posix . join ( config . distDir , '*.js.gz' ) ,
110117 path . posix . join ( config . distDir , 'appcache.manifest' )
111118 ] ) ,
119+ g . plumber ( ) ,
112120 dest ( config . targetDir ) ) ;
113121}
114122
115123function cleanDistTask ( ) {
116124 return g . pipeline (
117125 src ( path . posix . join ( config . distDir , '**/*' ) , { read : false , allowEmpty : true } ) ,
126+ g . plumber ( ) ,
118127 g . clean ( ) ) ;
119128}
120129
121130function cleanTargetTask ( ) {
122131 return g . pipeline (
123132 src ( config . targetDir , { read : false , allowEmpty : true } ) ,
133+ g . plumber ( ) ,
124134 g . clean ( { force : true } ) ) ;
125135}
126136
@@ -157,7 +167,7 @@ function fileListTask(cb) {
157167 const symbol = relativePath . replace ( / \. | \/ | \\ | - / g, '_' ) ;
158168 const startSymbol = symbol + '_start' ;
159169 const endSymbol = symbol + '_end' ;
160- const mime = util . mimeTypes . lookup ( ext ) ;
170+ const mime = util . mimeTypes . lookup ( rawName ) ;
161171
162172 // file.h
163173 fileHContent += '// ' + relativePath + '\n' ;
@@ -167,7 +177,7 @@ function fileListTask(cb) {
167177 // webserver.h
168178 webserverHContent += 'webServer_.on("/' + ( rawName === 'index.html' ? '' : rawName ) + '", [this]() {\n' ;
169179 webserverHContent += ' webServer_.sendHeader("Content-Encoding", "gzip");\n' ;
170- webserverHContent += ' webServer_.send_P(200, "' + mime + '", ' + startSymbol + ', ' + endSymbol + ' - ' + startSymbol + ' - 1 );\n' ;
180+ webserverHContent += ' webServer_.send_P(200, "' + mime + '", ' + startSymbol + ', ' + endSymbol + ' - ' + startSymbol + ');\n' ;
171181 webserverHContent += '});\n\n' ;
172182
173183 // plaformio.ini
@@ -195,11 +205,24 @@ function reloadTask(cb) {
195205}
196206
197207function watchTask ( ) {
198- server . init ( {
208+ let options = {
199209 server : {
200210 baseDir : config . distDir ,
201211 }
202- } ) ;
212+ } ;
213+
214+ let arguments = require ( 'commander' ) . option ( '-p --proxy <target>' , 'backend' ) . parse ( process . argv ) ;
215+ console . log ( "args" , arguments . opts ( ) ) ;
216+
217+ if ( arguments . proxy ) {
218+ console . log ( "Start WS proxy @ " , arguments . proxy ) ;
219+ httpProxy . createServer ( {
220+ target : arguments . proxy ,
221+ ws : true
222+ } ) . listen ( 81 ) ;
223+ }
224+
225+ server . init ( options ) ;
203226 watch ( path . posix . join ( config . srcDir , '*.html' ) , series ( htmlTask , pwaTask , copyTask , reloadTask ) ) ;
204227 watch ( path . posix . join ( config . srcDir , '*.js' ) , series ( jsTask , pwaTask , copyTask , reloadTask ) ) ;
205228 watch ( path . posix . join ( config . srcDir , '*.scss' ) , series ( cssTask , pwaTask , copyTask , reloadTask ) ) ;
@@ -219,6 +242,7 @@ exports.vjsc = vendorJsTask;
219242exports . copy = copyTask ;
220243exports . files = fileListTask ;
221244exports . pwa = pwaTask ;
245+ exports . watch = watchTask ;
222246exports . build = series ( parallel ( cleanDistTask , cleanTargetTask ) , parallel ( jsTask , htmlTask , cssTask , vendorCssTask , vendorJsTask ) , pwaTask , copyTask , fileListTask ) ;
223247
224248exports . default = exports . build ;
0 commit comments