@@ -21,6 +21,7 @@ const {
21
21
chunkFilename,
22
22
afterInitialBuildHook,
23
23
afterRebuildHook,
24
+ skipCleanup,
24
25
} ,
25
26
} = require ( '../utils/cliHandler' ) ;
26
27
const { getReactScriptsVersion, isEjected } = require ( '../utils' ) ;
@@ -129,49 +130,48 @@ config.plugins[htmlPluginIndex] = new HtmlWebpackPlugin({
129
130
} ) ;
130
131
131
132
spinner . succeed ( ) ;
132
- spinner . start ( 'Clear destination folder' ) ;
133
133
134
134
let inProgress = false ;
135
135
136
- fs . emptyDir ( paths . appBuild )
137
- . then ( ( ) => {
138
- spinner . succeed ( ) ;
139
-
140
- return new Promise ( ( resolve , reject ) => {
141
- const webpackCompiler = webpack ( config ) ;
142
- new webpack . ProgressPlugin ( ( ) => {
143
- if ( ! inProgress ) {
144
- spinner . start ( 'Start webpack watch' ) ;
145
- inProgress = true ;
146
- }
147
- } ) . apply ( webpackCompiler ) ;
148
-
149
- webpackCompiler . watch ( { } , ( err , stats ) => {
150
- if ( err ) {
151
- return reject ( err ) ;
152
- }
153
-
154
- spinner . succeed ( ) ;
155
-
156
- runHook ( 'after rebuild hook' , spinner , afterRebuildHook ) ;
157
-
158
- inProgress = false ;
159
-
160
- if ( verbose ) {
161
- console . log ( ) ;
162
- console . log (
163
- stats . toString ( {
164
- chunks : false ,
165
- colors : true ,
166
- } )
167
- ) ;
168
- console . log ( ) ;
169
- }
170
-
171
- return resolve ( ) ;
172
- } ) ;
173
- } ) ;
174
- } )
136
+ Promise . resolve ( )
137
+ . then ( ( ) => skipCleanup || clearDestinationFolder ( ) )
138
+ . then (
139
+ ( ) =>
140
+ new Promise ( ( resolve , reject ) => {
141
+ const webpackCompiler = webpack ( config ) ;
142
+ new webpack . ProgressPlugin ( ( ) => {
143
+ if ( ! inProgress ) {
144
+ spinner . start ( 'Start webpack watch' ) ;
145
+ inProgress = true ;
146
+ }
147
+ } ) . apply ( webpackCompiler ) ;
148
+
149
+ webpackCompiler . watch ( { } , ( err , stats ) => {
150
+ if ( err ) {
151
+ return reject ( err ) ;
152
+ }
153
+
154
+ spinner . succeed ( ) ;
155
+
156
+ runHook ( 'after rebuild hook' , spinner , afterRebuildHook ) ;
157
+
158
+ inProgress = false ;
159
+
160
+ if ( verbose ) {
161
+ console . log ( ) ;
162
+ console . log (
163
+ stats . toString ( {
164
+ chunks : false ,
165
+ colors : true ,
166
+ } )
167
+ ) ;
168
+ console . log ( ) ;
169
+ }
170
+
171
+ return resolve ( ) ;
172
+ } ) ;
173
+ } )
174
+ )
175
175
. then ( ( ) => copyPublicFolder ( ) )
176
176
. then ( ( ) => runHook ( 'after initial build hook' , spinner , afterInitialBuildHook ) ) ;
177
177
@@ -207,3 +207,8 @@ function handleBuildPath(userBuildPath) {
207
207
208
208
return path . join ( process . cwd ( ) , userBuildPath ) ;
209
209
}
210
+
211
+ function clearDestinationFolder ( ) {
212
+ spinner . start ( 'Clear destination folder' ) ;
213
+ return fs . emptyDir ( paths . appBuild ) . then ( ( ) => spinner . succeed ( ) ) ;
214
+ }
0 commit comments