@@ -6,7 +6,7 @@ const Task = require('../ember-cli/lib/models/task');
6
6
import * as webpack from 'webpack' ;
7
7
const WebpackDevServer = require ( 'webpack-dev-server' ) ;
8
8
const ProgressPlugin = require ( 'webpack/lib/ProgressPlugin' ) ;
9
- import { webpackDevServerOutputOptions } from '../models/' ;
9
+ import { webpackOutputOptions , verboseWebpackOutputOptions } from '../models/' ;
10
10
import { NgCliWebpackConfig } from '../models/webpack-config' ;
11
11
import { ServeTaskOptions } from '../commands/serve' ;
12
12
import { CliConfig } from '../models/config' ;
@@ -15,37 +15,44 @@ import * as url from 'url';
15
15
const opn = require ( 'opn' ) ;
16
16
17
17
export default Task . extend ( {
18
- run : function ( commandOptions : ServeTaskOptions ) {
18
+ run : function ( serveTaskOptions : ServeTaskOptions ) {
19
19
const ui = this . ui ;
20
20
21
21
let webpackCompiler : any ;
22
22
23
23
let config = new NgCliWebpackConfig (
24
24
this . project ,
25
- commandOptions . target ,
26
- commandOptions . environment ,
25
+ serveTaskOptions . target ,
26
+ serveTaskOptions . environment ,
27
27
undefined ,
28
28
undefined ,
29
- commandOptions . aot ,
30
- commandOptions . sourcemap ,
31
- commandOptions . vendorChunk
29
+ serveTaskOptions . aot ,
30
+ serveTaskOptions . sourcemap ,
31
+ serveTaskOptions . vendorChunk ,
32
+ serveTaskOptions . verbose
32
33
) . config ;
33
34
34
35
// This allows for live reload of page when changes are made to repo.
35
36
// https://webpack.github.io/docs/webpack-dev-server.html#inline-mode
36
37
config . entry . main . unshift (
37
- `webpack-dev-server/client?http://${ commandOptions . host } :${ commandOptions . port } /`
38
+ `webpack-dev-server/client?http://${ serveTaskOptions . host } :${ serveTaskOptions . port } /`
38
39
) ;
39
40
webpackCompiler = webpack ( config ) ;
40
41
41
- webpackCompiler . apply ( new ProgressPlugin ( {
42
- profile : true ,
43
- colors : true
44
- } ) ) ;
42
+ const statsOptions = serveTaskOptions . verbose
43
+ ? Object . assign ( webpackOutputOptions , verboseWebpackOutputOptions )
44
+ : webpackOutputOptions ;
45
+
46
+ if ( serveTaskOptions . progress ) {
47
+ webpackCompiler . apply ( new ProgressPlugin ( {
48
+ profile : serveTaskOptions . verbose ,
49
+ colors : true
50
+ } ) ) ;
51
+ }
45
52
46
53
let proxyConfig = { } ;
47
- if ( commandOptions . proxyConfig ) {
48
- const proxyPath = path . resolve ( this . project . root , commandOptions . proxyConfig ) ;
54
+ if ( serveTaskOptions . proxyConfig ) {
55
+ const proxyPath = path . resolve ( this . project . root , serveTaskOptions . proxyConfig ) ;
49
56
if ( fs . existsSync ( proxyPath ) ) {
50
57
proxyConfig = require ( proxyPath ) ;
51
58
} else {
@@ -56,12 +63,12 @@ export default Task.extend({
56
63
57
64
let sslKey : string = null ;
58
65
let sslCert : string = null ;
59
- if ( commandOptions . ssl ) {
60
- const keyPath = path . resolve ( this . project . root , commandOptions . sslKey ) ;
66
+ if ( serveTaskOptions . ssl ) {
67
+ const keyPath = path . resolve ( this . project . root , serveTaskOptions . sslKey ) ;
61
68
if ( fs . existsSync ( keyPath ) ) {
62
69
sslKey = fs . readFileSync ( keyPath , 'utf-8' ) ;
63
70
}
64
- const certPath = path . resolve ( this . project . root , commandOptions . sslCert ) ;
71
+ const certPath = path . resolve ( this . project . root , serveTaskOptions . sslCert ) ;
65
72
if ( fs . existsSync ( certPath ) ) {
66
73
sslCert = fs . readFileSync ( certPath , 'utf-8' ) ;
67
74
}
@@ -77,14 +84,14 @@ export default Task.extend({
77
84
disableDotRule : true ,
78
85
htmlAcceptHeaders : [ 'text/html' , 'application/xhtml+xml' ]
79
86
} ,
80
- stats : webpackDevServerOutputOptions ,
87
+ stats : statsOptions ,
81
88
inline : true ,
82
89
proxy : proxyConfig ,
83
- compress : commandOptions . target === 'production' ,
90
+ compress : serveTaskOptions . target === 'production' ,
84
91
watchOptions : {
85
92
poll : CliConfig . fromProject ( ) . config . defaults . poll
86
93
} ,
87
- https : commandOptions . ssl
94
+ https : serveTaskOptions . ssl
88
95
} ;
89
96
90
97
if ( sslKey != null && sslCert != null ) {
@@ -95,19 +102,21 @@ export default Task.extend({
95
102
ui . writeLine ( chalk . green ( oneLine `
96
103
**
97
104
NG Live Development Server is running on
98
- http${ commandOptions . ssl ? 's' : '' } ://${ commandOptions . host } :${ commandOptions . port } .
105
+ http${ serveTaskOptions . ssl ? 's' : '' } ://${ serveTaskOptions . host } :${ serveTaskOptions . port } .
99
106
**
100
107
` ) ) ;
101
108
102
109
const server = new WebpackDevServer ( webpackCompiler , webpackDevServerConfiguration ) ;
103
110
return new Promise ( ( resolve , reject ) => {
104
- server . listen ( commandOptions . port , `${ commandOptions . host } ` , function ( err : any , stats : any ) {
111
+ server . listen ( serveTaskOptions . port ,
112
+ `${ serveTaskOptions . host } ` ,
113
+ function ( err : any , stats : any ) {
105
114
if ( err ) {
106
115
console . error ( err . stack || err ) ;
107
116
if ( err . details ) { console . error ( err . details ) ; }
108
117
reject ( err . details ) ;
109
118
} else {
110
- const { open, host, port } = commandOptions ;
119
+ const { open, host, port } = serveTaskOptions ;
111
120
if ( open ) {
112
121
opn ( url . format ( { protocol : 'http' , hostname : host , port : port . toString ( ) } ) ) ;
113
122
}
0 commit comments