1
1
'use strict' ;
2
2
3
3
let connect = require ( 'connect' ) ,
4
+ fs = require ( 'fs' ) ,
4
5
http = require ( 'http' ) ,
5
6
serveStatic = require ( 'serve-static' ) ,
6
7
serveIndex = require ( 'serve-index' ) ,
@@ -169,31 +170,32 @@ exports.run = (options) => {
169
170
projectCwd = sysPath . join ( cwd , projectName ) ,
170
171
middleware = middlewareCache [ projectName ] ;
171
172
173
+ let compiler
174
+
172
175
if ( ! middleware ) {
173
- let project = Manager . getProject ( projectCwd ) ;
176
+ let project = Manager . getProject ( projectCwd , { cache : false } ) ;
177
+
174
178
if ( project . check ( ) ) {
175
- let compiler = project . getServerCompiler ( ) ;
176
- middleware = middlewareCache [ projectName ] = webpackDevMiddleware ( compiler , {
177
- quiet : true ,
178
- } ) ;
179
+ compiler = project . getServerCompiler ( ) ;
179
180
180
- // 输出server运行中 error/warning 信息
181
181
compiler . watch ( { } , function ( err , stats ) {
182
- const statsInfo = stats . toJson ( { errorDetails : false } ) ,
183
- logMethods = {
184
- errors : error ,
185
- warnings : warn
186
- } ;
187
-
188
- Object . keys ( logMethods ) . map ( ( typeId ) => {
189
- statsInfo [ typeId ] . map ( ( logInfo ) => {
190
- logMethods [ typeId ] ( logInfo ) ;
191
- } ) ;
182
+ middleware = middlewareCache [ projectName ] = webpackDevMiddleware ( compiler , {
183
+ quiet : true ,
192
184
} ) ;
193
185
186
+ // 输出server运行中 error/warning 信息
194
187
req . url = '/' + keys . slice ( 3 ) . join ( '/' ) . replace ( / ( \@ [ \d \w ] + ) ? \. ( j s | c s s ) / , '.$2' ) ;
195
188
middleware ( req , res , next ) ;
196
189
} ) ;
190
+
191
+ // 检测config文件变化
192
+ const projectConfigFilePath = sysPath . resolve ( project . config . _config . cwd , project . configFile )
193
+ fs . watch ( projectConfigFilePath , ( eventType , filename ) => {
194
+ if ( eventType === 'change' ) {
195
+ // middleware.invalidate()
196
+ middlewareCache [ projectName ] = null
197
+ }
198
+ } ) ;
197
199
} else {
198
200
next ( ) ;
199
201
return ;
@@ -202,7 +204,6 @@ exports.run = (options) => {
202
204
req . url = '/' + keys . slice ( 3 ) . join ( '/' ) . replace ( / ( \@ [ \d \w ] + ) ? \. ( j s | c s s ) / , '.$2' ) ;
203
205
middleware ( req , res , next ) ;
204
206
}
205
-
206
207
} else {
207
208
next ( ) ;
208
209
}
0 commit comments