11/*eslint-env node*/
22/*eslint no-sync: 0*/
33/*eslint no-process-exit: 0*/
4+ /*eslint no-redeclare: 0*/
5+ /*eslint @typescript-eslint/no-require-imports: 0*/
46
57"use strict" ;
68
@@ -17,6 +19,17 @@ var watchOptions = {
1719 interval : 1000
1820} ;
1921
22+ const getBaseHref = ( ) => {
23+ var minimist = require ( "minimist" ) ;
24+ // Arguments written in skewer-case can cause problems (unsure why), so stick to camelCase
25+ var options = minimist ( process . argv . slice ( 2 ) , {
26+ string : [ "baseHref" ] ,
27+ default : { baseHref : "/" }
28+ } ) ;
29+
30+ return options . baseHref ;
31+ } ;
32+
2033gulp . task ( "check-terriajs-dependencies" , function ( done ) {
2134 var appPackageJson = require ( "./package.json" ) ;
2235 var terriaPackageJson = require ( "terriajs/package.json" ) ;
@@ -68,33 +81,19 @@ gulp.task("write-version", function (done) {
6881 done ( ) ;
6982} ) ;
7083
71- gulp . task ( "render-index" , function renderIndex ( done ) {
72- var ejs = require ( "ejs" ) ;
73- var minimist = require ( "minimist" ) ;
74- // Arguments written in skewer-case can cause problems (unsure why), so stick to camelCase
75- var options = minimist ( process . argv . slice ( 2 ) , {
76- string : [ "baseHref" ] ,
77- default : { baseHref : "/" }
78- } ) ;
79-
80- var index = fs . readFileSync ( "wwwroot/index.ejs" , "utf8" ) ;
81- var indexResult = ejs . render ( index , { baseHref : options . baseHref } ) ;
82-
83- fs . writeFileSync ( path . join ( "wwwroot" , "index.html" ) , indexResult ) ;
84- done ( ) ;
85- } ) ;
86-
8784gulp . task (
8885 "build-app" ,
8986 gulp . parallel (
90- "render-index" ,
9187 gulp . series (
9288 "check-terriajs-dependencies" ,
9389 "write-version" ,
9490 function buildApp ( done ) {
9591 var runWebpack = require ( "terriajs/buildprocess/runWebpack.js" ) ;
9692 var webpack = require ( "webpack" ) ;
97- var webpackConfig = require ( "./buildprocess/webpack.config.js" ) ( true ) ;
93+ var webpackConfig = require ( "./buildprocess/webpack.config.js" ) ( {
94+ devMode : true ,
95+ baseHref : getBaseHref ( )
96+ } ) ;
9897
9998 checkForDuplicateCesium ( ) ;
10099
@@ -107,14 +106,16 @@ gulp.task(
107106gulp . task (
108107 "release-app" ,
109108 gulp . parallel (
110- "render-index" ,
111109 gulp . series (
112110 "check-terriajs-dependencies" ,
113111 "write-version" ,
114112 function releaseApp ( done ) {
115113 var runWebpack = require ( "terriajs/buildprocess/runWebpack.js" ) ;
116114 var webpack = require ( "webpack" ) ;
117- var webpackConfig = require ( "./buildprocess/webpack.config.js" ) ( false ) ;
115+ var webpackConfig = require ( "./buildprocess/webpack.config.js" ) ( {
116+ devMode : false ,
117+ baseHref : getBaseHref ( )
118+ } ) ;
118119
119120 checkForDuplicateCesium ( ) ;
120121
@@ -130,25 +131,17 @@ gulp.task(
130131 )
131132) ;
132133
133- gulp . task (
134- "watch-render-index" ,
135- gulp . series ( "render-index" , function watchRenderIndex ( ) {
136- gulp . watch ( [ "wwwroot/index.ejs" ] , gulp . series ( "render-index" ) ) ;
137- } )
138- ) ;
139-
140134gulp . task (
141135 "watch-app" ,
142136 gulp . parallel (
143- "watch-render-index" ,
144137 gulp . series ( "check-terriajs-dependencies" , function watchApp ( done ) {
145138 var fs = require ( "fs" ) ;
146139 var watchWebpack = require ( "terriajs/buildprocess/watchWebpack" ) ;
147140 var webpack = require ( "webpack" ) ;
148- var webpackConfig = require ( "./buildprocess/webpack.config.js" ) (
149- true ,
150- false
151- ) ;
141+ var webpackConfig = require ( "./buildprocess/webpack.config.js" ) ( {
142+ devMode : true ,
143+ baseHref : getBaseHref ( )
144+ } ) ;
152145
153146 checkForDuplicateCesium ( ) ;
154147
@@ -229,6 +222,7 @@ gulp.task("sync-terriajs-dependencies", function (done) {
229222
230223function syncDependencies ( dependencies , targetJson , justWarn ) {
231224 for ( var dependency in dependencies ) {
225+ // eslint-disable-next-line no-prototype-builtins
232226 if ( dependencies . hasOwnProperty ( dependency ) ) {
233227 var version =
234228 targetJson . dependencies [ dependency ] ||
@@ -287,10 +281,24 @@ gulp.task("terriajs-server", terriajsServerGulpTask(3001));
287281gulp . task ( "build" , gulp . series ( "copy-terriajs-assets" , "build-app" ) ) ;
288282gulp . task ( "release" , gulp . series ( "copy-terriajs-assets" , "release-app" ) ) ;
289283gulp . task ( "watch" , gulp . parallel ( "watch-terriajs-assets" , "watch-app" ) ) ;
290- // Run render-index before starting terriajs-server because terriajs-server won't
291- // start if index.html isn't present
284+ // Simple task that waits for index.html then starts server
292285gulp . task (
293286 "dev" ,
294- gulp . parallel ( gulp . series ( "render-index" , "terriajs-server" ) , "watch" )
287+ gulp . parallel ( "watch" , function startServerWhenReady ( done ) {
288+ const indexFile = path . join ( __dirname , "wwwroot" , "index.html" ) ;
289+
290+ if ( fs . existsSync ( indexFile ) ) {
291+ terriajsServerGulpTask ( 3001 ) ( done ) ;
292+ return ;
293+ }
294+ var watcher = gulp . watch (
295+ path . join ( __dirname , "wwwroot" , "index.html" ) ,
296+ watchOptions
297+ ) ;
298+ watcher . on ( "add" , function ( ) {
299+ watcher . close ( ) ;
300+ terriajsServerGulpTask ( 3001 ) ( done ) ;
301+ } ) ;
302+ } )
295303) ;
296304gulp . task ( "default" , gulp . series ( "lint" , "build" ) ) ;
0 commit comments