@@ -14,6 +14,9 @@ const responsive = require('gulp-responsive');
14
14
15
15
const { swagList, swagImages} = require ( './get-data' ) ;
16
16
17
+ const PRODUCTION = process . env . NODE_ENV === 'production' ;
18
+
19
+ const REV_PATH = './dist/rev-manifest.json' ;
17
20
const RESIZE_OPTS = {
18
21
quality : 90 ,
19
22
progressive : true ,
@@ -22,6 +25,11 @@ const RESIZE_OPTS = {
22
25
errorOnUnusedConfig : false
23
26
} ;
24
27
28
+ let manifest = {
29
+ 'css/index.css' : 'css/index.css' ,
30
+ 'js/index.js' : 'js/index.js' ,
31
+ } ;
32
+
25
33
gulp . task ( 'pug' , ( ) => {
26
34
const tags = Array . from ( swagList . reduce (
27
35
( tagList , { tags } ) => {
@@ -31,7 +39,11 @@ gulp.task('pug', () => {
31
39
new Set ( )
32
40
) ) . sort ( ) ;
33
41
34
- const manifest = require ( './rev-manifest.json' ) ;
42
+ if ( PRODUCTION ) {
43
+ delete require . cache [ require . resolve ( REV_PATH ) ] ;
44
+ manifest = require ( REV_PATH ) ;
45
+ }
46
+
35
47
const bustedAssets = {
36
48
css : `/assets/${ manifest [ 'css/index.css' ] } ` ,
37
49
js : `/assets/${ manifest [ 'js/index.js' ] } `
@@ -98,34 +110,33 @@ gulp.task('swag-img:optimize', () => {
98
110
99
111
gulp . task ( 'swag-img' , gulp . series ( 'swag-img:clean' , 'swag-img:download' , 'swag-img:optimize' ) ) ;
100
112
101
- gulp . task ( 'clean' , ( ) => {
102
- return del ( [
103
- './rev-manifest.json' ,
104
- 'dist/assets/css/*' ,
105
- 'dist/assets/js/*' ,
106
- 'dist/assets/swag-img/*'
107
- ] ) ;
108
- } ) ;
113
+ gulp . task ( 'clean:styl' , ( ) => del ( 'dist/assets/css/*' ) ) ;
114
+ gulp . task ( 'clean:js' , ( ) => del ( 'dist/assets/js/*' ) ) ;
115
+ gulp . task ( 'clean:assets' , gulp . parallel ( 'clean:styl' , 'clean:js' ) ) ;
116
+ gulp . task ( 'clean:pug' , ( ) => del ( 'dist/index.html' ) ) ;
117
+ gulp . task ( 'clean' , gulp . parallel ( 'clean:pug' , 'clean:assets' ) ) ;
109
118
110
119
gulp . task ( 'cachebust' , cb => {
120
+ const basePath = 'dist/assets' ;
111
121
const bustedFiles = [
112
122
'dist/assets/css/*' ,
113
123
'dist/assets/js/*' ,
114
124
'dist/assets/swag-img/*'
115
125
] ;
116
126
117
- return gulp . src ( bustedFiles , { base : 'dist/assets/' } )
127
+ return gulp . src ( bustedFiles , { base : basePath } )
118
128
. pipe ( cachebust ( ) )
119
129
. pipe ( cacheClean ( ) )
120
- . pipe ( gulp . dest ( 'dist/assets' ) )
130
+ . pipe ( gulp . dest ( basePath ) )
121
131
. pipe ( cachebust . manifest ( {
122
- base : 'dist/assets' ,
123
- merge : true
132
+ path : REV_PATH ,
133
+ base : basePath ,
124
134
} ) )
125
- . pipe ( gulp . dest ( 'dist/assets/' ) )
135
+ . pipe ( gulp . dest ( basePath ) )
126
136
. on ( 'end' , ( ) => {
127
- delete require . cache [ require . resolve ( './rev-manifest.json' ) ] ;
128
- const manifest = require ( './rev-manifest.json' ) ;
137
+ delete require . cache [ require . resolve ( REV_PATH ) ] ;
138
+ manifest = require ( REV_PATH ) ;
139
+
129
140
swagList . forEach ( swag => {
130
141
const filename = `swag-img/${ swag . image . split ( '/' ) . pop ( ) } ` ;
131
142
if ( ! manifest [ filename ] ) {
@@ -148,9 +159,9 @@ gulp.task('webserver', () => {
148
159
} ) ;
149
160
150
161
gulp . task ( 'watch' , ( ) => {
151
- gulp . watch ( 'src/pug/**/*.pug' , gulp . parallel ( 'pug' ) ) ;
152
- gulp . watch ( 'src/styl/**/*.styl' , gulp . series ( 'clean' , ' styl', 'cachebust ' ) ) ;
153
- gulp . watch ( 'src/js/*.js' , gulp . series ( 'clean' , ' js', 'cachebust ' ) ) ;
162
+ gulp . watch ( 'src/pug/**/*.pug' , gulp . series ( 'pug' ) ) ;
163
+ gulp . watch ( 'src/styl/**/*.styl' , gulp . series ( 'clean: styl' , 'styl ' ) ) ;
164
+ gulp . watch ( 'src/js/*.js' , gulp . series ( 'clean: js' , 'js ' ) ) ;
154
165
} ) ;
155
166
156
167
gulp . task ( 'build' , gulp . series (
0 commit comments