@@ -31,7 +31,15 @@ export default Task.extend({
3131 if ( projectConfig . project && projectConfig . project . ejected ) {
3232 throw new SilentError ( 'An ejected project cannot use the build command anymore.' ) ;
3333 }
34- rimraf . sync ( path . resolve ( this . project . root , outputPath ) ) ;
34+
35+ const contentBase = path . resolve ( this . project . root , outputPath ) ;
36+ if ( serveTaskOptions . useDist ) {
37+ if ( ! fs . existsSync ( contentBase ) ) {
38+ throw new SilentError ( 'Dist directory not found' ) ;
39+ }
40+ } else {
41+ rimraf . sync ( contentBase ) ;
42+ }
3543
3644 const serveDefaults = {
3745 // default deployUrl to '' on serve to prevent the default from .angular-cli.json
@@ -151,6 +159,12 @@ export default Task.extend({
151159 overlay : serveTaskOptions . target === 'development'
152160 } ;
153161
162+ if ( serveTaskOptions . useDist ) {
163+ webpackDevServerConfiguration . contentBase = contentBase ;
164+ webpackDevServerConfiguration . lazy = true ;
165+ webpackDevServerConfiguration . filename = appConfig . main ;
166+ }
167+
154168 if ( sslKey != null && sslCert != null ) {
155169 webpackDevServerConfiguration . key = sslKey ;
156170 webpackDevServerConfiguration . cert = sslCert ;
@@ -182,15 +196,18 @@ export default Task.extend({
182196 return reject ( err ) ;
183197 }
184198 if ( serveTaskOptions . open ) {
185- opn ( serverAddress ) ;
199+ opn ( serverAddress ) ;
200+ }
201+ if ( serveTaskOptions . useDist && rebuildDoneCb ) {
202+ rebuildDoneCb ( ) ;
186203 }
187204 } ) ;
188205 } )
189- . catch ( ( err : Error ) => {
190- if ( err ) {
191- this . ui . writeError ( '\nAn error occured during the build:\n' + ( ( err && err . stack ) || err ) ) ;
192- }
193- throw err ;
194- } ) ;
206+ . catch ( ( err : Error ) => {
207+ if ( err ) {
208+ this . ui . writeError ( '\nAn error occured during the build:\n' + ( ( err && err . stack ) || err ) ) ;
209+ }
210+ throw err ;
211+ } ) ;
195212 }
196213} ) ;
0 commit comments