mod-build 3.6.8 → 3.6.9--beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/gulp-tasks/cache-bust.js +2 -2
- package/gulp-tasks/grab-shared-scripts.js +227 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.6.9
|
|
4
|
+
|
|
5
|
+
- Adding `footer-component` JS + CSS & `abandonment` JS + CSS to the `grab-shared-scripts` gulp task. It will copy local versions into the site's `resources/` folder & then update the src or href as needed. `cache-bust` will also ignore the entire resources folder.
|
|
6
|
+
|
|
3
7
|
## 3.6.8
|
|
4
8
|
|
|
5
9
|
- Adding a new `useRelativePathForResources` parameter for special use-cases that need to use a relative path for shared scripts (ie. the improvementcenter pages)
|
package/gulp-tasks/cache-bust.js
CHANGED
|
@@ -3,8 +3,8 @@ module.exports = function(gulp, gulpPlugins, siteSettings) {
|
|
|
3
3
|
return function() {
|
|
4
4
|
return gulp.src(siteSettings.distFolder + '/**')
|
|
5
5
|
.pipe(gulpPlugins.revAll.revision({
|
|
6
|
-
dontRenameFile: [/^\/favicon.ico$/g, '.html', '.txt', /modlogo([\w|\s|-])*\.(?:svg)/g,
|
|
7
|
-
dontUpdateReference: [/^\/favicon.ico$/g, '.html', '.txt', /modlogo([\w|\s|-])*\.(?:svg)/g,
|
|
6
|
+
dontRenameFile: [/^\/favicon.ico$/g, '.html', '.txt', /modlogo([\w|\s|-])*\.(?:svg)/g, /(resources)\/.*/],
|
|
7
|
+
dontUpdateReference: [/^\/favicon.ico$/g, '.html', '.txt', /modlogo([\w|\s|-])*\.(?:svg)/g, /(resources)\/.*/],
|
|
8
8
|
transformFilename: function (file, hash) {
|
|
9
9
|
var ext = path.extname(file.path);
|
|
10
10
|
return path.basename(file.path, ext) + '-' + hash.substr(0, 8) + ext;
|
|
@@ -6,8 +6,13 @@ var tap = require('gulp-tap');
|
|
|
6
6
|
var path = require('path');
|
|
7
7
|
|
|
8
8
|
var modAlyticsFileName = '';
|
|
9
|
+
var modUtilsFileName = '';
|
|
10
|
+
var abandonmentJsFileName = '';
|
|
11
|
+
var footerComponentJsFileName = '';
|
|
12
|
+
var modFooterStylesFileName = '';
|
|
13
|
+
var qsFooterStylesFileName = '';
|
|
9
14
|
|
|
10
|
-
function
|
|
15
|
+
function replaceModalyticsSrc(gulp, gulpPlugins, siteSettings, siteData) {
|
|
11
16
|
if (siteData.siteData && siteData.siteData.isQuotePage === true || siteData.siteData && siteData.siteData.useRelativePathForResources === true) {
|
|
12
17
|
return gulp.src(siteSettings.srcFolder + '/shared-components/head/head.html')
|
|
13
18
|
.pipe(replace(/".*(modalytics).*"/, '"resources/scripts/mod-alytics/' + modAlyticsFileName + '"'))
|
|
@@ -19,7 +24,71 @@ function replaceModalyticsSrcInHead(gulp, gulpPlugins, siteSettings, siteData) {
|
|
|
19
24
|
}
|
|
20
25
|
}
|
|
21
26
|
|
|
22
|
-
function
|
|
27
|
+
function replaceModutilsSrc(gulp, gulpPlugins, siteSettings, siteData) {
|
|
28
|
+
if (siteData.siteData && siteData.siteData.isQuotePage === true || siteData.siteData && siteData.siteData.useRelativePathForResources === true) {
|
|
29
|
+
return gulp.src(siteSettings.srcFolder + '/shared-components/foot-assets/foot-assets.html')
|
|
30
|
+
.pipe(replace(/"(?:(?!"|js")[\s\S])+(modutils|mod-utils.*?)js"/, '"resources/scripts/mod-utils/' + modUtilsFileName + '"'))
|
|
31
|
+
.pipe(gulp.dest(siteSettings.srcFolder + '/shared-components/foot-assets'));
|
|
32
|
+
} else {
|
|
33
|
+
return gulp.src(siteSettings.srcFolder + '/shared-components/foot-assets/foot-assets.html')
|
|
34
|
+
.pipe(replace(/"(?:(?!"|js")[\s\S])+(modutils|mod-utils.*?)js"/, '"/resources/scripts/mod-utils/' + modUtilsFileName + '"'))
|
|
35
|
+
.pipe(gulp.dest(siteSettings.srcFolder + '/shared-components/foot-assets'));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function replaceAbandonmentJsSrc(gulp, gulpPlugins, siteSettings, siteData) {
|
|
40
|
+
if (siteData.siteData && siteData.siteData.isQuotePage === true || siteData.siteData && siteData.siteData.useRelativePathForResources === true) {
|
|
41
|
+
return gulp.src(siteSettings.srcFolder + '/templates/abandonment/*.html')
|
|
42
|
+
.pipe(replace(/"(?:(?!"|")[\s\S])+(abandonment\/abandonment.*?)js"/, '"resources/scripts/abandonment/' + abandonmentJsFileName + '"'))
|
|
43
|
+
.pipe(gulp.dest(siteSettings.srcFolder + '/templates/abandonment'));
|
|
44
|
+
} else {
|
|
45
|
+
return gulp.src(siteSettings.srcFolder + '/templates/abandonment/*.html')
|
|
46
|
+
.pipe(replace(/"(?:(?!"|")[\s\S])+(abandonment\/abandonment.*?)js"/, '"/resources/scripts/abandonment/' + abandonmentJsFileName + '"'))
|
|
47
|
+
.pipe(gulp.dest(siteSettings.srcFolder + '/templates/abandonment'));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function replaceFooterComponentJsSrc(gulp, gulpPlugins, siteSettings, siteData) {
|
|
52
|
+
if (siteData.siteData && siteData.siteData.isQuotePage === true || siteData.siteData && siteData.siteData.useRelativePathForResources === true) {
|
|
53
|
+
return gulp.src(siteSettings.srcFolder + '/shared-components/foot-assets/foot-assets.html')
|
|
54
|
+
.pipe(replace(/"(?:(?!"|")[\s\S])+(footer\/footer-component.*?)js"/, '"resources/scripts/footer/' + footerComponentJsFileName + '"'))
|
|
55
|
+
.pipe(gulp.dest(siteSettings.srcFolder + '/shared-components/foot-assets'));
|
|
56
|
+
} else {
|
|
57
|
+
return gulp.src(siteSettings.srcFolder + '/shared-components/foot-assets/foot-assets.html')
|
|
58
|
+
.pipe(replace(/"(?:(?!"|")[\s\S])+(footer\/footer-component.*?)js"/, '"/resources/scripts/footer/' + footerComponentJsFileName + '"'))
|
|
59
|
+
.pipe(gulp.dest(siteSettings.srcFolder + '/shared-components/foot-assets'));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function replaceFooterStylesReference(gulp, gulpPlugins, siteSettings, siteData) {
|
|
64
|
+
if (siteData.siteData && siteData.siteData.isQuotePage === true || siteData.siteData && siteData.siteData.useRelativePathForResources === true) {
|
|
65
|
+
return gulp.src(siteSettings.srcFolder + '/resources/scripts/footer/' + footerComponentJsFileName)
|
|
66
|
+
.pipe(replace(/concat\((?:(?!concat\(|\))[\s\S])+(components\/footer\/mod.*?)\)/, 'concat("resources/styles/components/footer/' + modFooterStylesFileName + '")'))
|
|
67
|
+
.pipe(replace(/concat\((?:(?!concat\(|\))[\s\S])+(components\/footer\/qs.*?)\)/, 'concat("resources/styles/components/footer/' + qsFooterStylesFileName + '")'))
|
|
68
|
+
.pipe(gulp.dest(siteSettings.srcFolder + '/resources/scripts/footer'));
|
|
69
|
+
} else {
|
|
70
|
+
return gulp.src(siteSettings.srcFolder + '/resources/scripts/footer/' + footerComponentJsFileName)
|
|
71
|
+
.pipe(replace(/concat\((?:(?!concat\(|\))[\s\S])+(components\/footer\/mod.*?)\)/, 'concat("/resources/styles/components/footer/' + modFooterStylesFileName + '")'))
|
|
72
|
+
.pipe(replace(/concat\((?:(?!concat\(|\))[\s\S])+(components\/footer\/qs.*?)\)/, 'concat("/resources/styles/components/footer/' + qsFooterStylesFileName + '")'))
|
|
73
|
+
.pipe(gulp.dest(siteSettings.srcFolder + '/resources/scripts/footer'))
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function replaceFooterStylesReferenceInMap(gulp, gulpPlugins, siteSettings, siteData) {
|
|
78
|
+
if (siteData.siteData && siteData.siteData.isQuotePage === true || siteData.siteData && siteData.siteData.useRelativePathForResources === true) {
|
|
79
|
+
return gulp.src(siteSettings.srcFolder + '/resources/scripts/footer/footer-component.min.js.map')
|
|
80
|
+
.pipe(replace(/\`(?:(?!\`|\`)[\s\S])+(components\/footer\/mod.*?)\`/, '`resources/styles/components/footer/' + modFooterStylesFileName + '`'))
|
|
81
|
+
.pipe(replace(/\`(?:(?!\`|\`)[\s\S])+(components\/footer\/qs.*?)\`/, '`resources/styles/components/footer/' + qsFooterStylesFileName + '`'))
|
|
82
|
+
.pipe(gulp.dest(siteSettings.srcFolder + '/resources/scripts/footer'));
|
|
83
|
+
} else {
|
|
84
|
+
return gulp.src(siteSettings.srcFolder + '/resources/scripts/footer/footer-component.min.js.map')
|
|
85
|
+
.pipe(replace(/\`(?:(?!\`|\`)[\s\S])+(components\/footer\/mod.*?)\`/, '`/resources/styles/components/footer/' + modFooterStylesFileName + '`'))
|
|
86
|
+
.pipe(replace(/\`(?:(?!\`|\`)[\s\S])+(components\/footer\/mod.*?)\`/, '`/resources/styles/components/footer/' + qsFooterStylesFileName + '`'))
|
|
87
|
+
.pipe(gulp.dest(siteSettings.srcFolder + '/resources/scripts/footer'));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function copyModalytics(gulp, gulpPlugins, siteSettings, siteData) {
|
|
23
92
|
return new Promise(resolve => {
|
|
24
93
|
request(`https://${siteSettings.nodeEnv}/quote/resources/mod-alytics/modalytics.min.js`)
|
|
25
94
|
.on('response', resp => {
|
|
@@ -45,7 +114,7 @@ function copyCurrentModalytics(gulp, gulpPlugins, siteSettings, siteData) {
|
|
|
45
114
|
if (resp.statusCode !== 200) {
|
|
46
115
|
throw new Error(`${resp.statusCode} Error while fetching modalytics.min.js.map`);
|
|
47
116
|
} else {
|
|
48
|
-
|
|
117
|
+
replaceModalyticsSrc(gulp, gulpPlugins, siteSettings, siteData);
|
|
49
118
|
}
|
|
50
119
|
})
|
|
51
120
|
.pipe(source('modalytics.min.js.map'))
|
|
@@ -54,6 +123,160 @@ function copyCurrentModalytics(gulp, gulpPlugins, siteSettings, siteData) {
|
|
|
54
123
|
});
|
|
55
124
|
});
|
|
56
125
|
}
|
|
126
|
+
|
|
127
|
+
function copyModutils(gulp, gulpPlugins, siteSettings, siteData) {
|
|
128
|
+
return new Promise(resolve => {
|
|
129
|
+
request(`https://${siteSettings.nodeEnv}/quote/resources/mod-utils/modutils.min.js`)
|
|
130
|
+
.on('response', resp => {
|
|
131
|
+
if (resp.statusCode !== 200) {
|
|
132
|
+
throw new Error(`${resp.statusCode} Error while fetching modutils.min.js`);
|
|
133
|
+
}
|
|
134
|
+
})
|
|
135
|
+
.pipe(source('modutils.min.js'))
|
|
136
|
+
.pipe(hash({
|
|
137
|
+
hashLength: 20,
|
|
138
|
+
template: 'modutils-<%= hash %>.min.js'
|
|
139
|
+
}))
|
|
140
|
+
.pipe(tap(function(file, t){
|
|
141
|
+
modUtilsFileName = path.basename(file.path);
|
|
142
|
+
}))
|
|
143
|
+
.pipe(gulp.dest(`${siteSettings.srcFolder}/resources/scripts/mod-utils`))
|
|
144
|
+
.on('finish', resolve);
|
|
145
|
+
})
|
|
146
|
+
.then(() => {
|
|
147
|
+
return new Promise(resolve => {
|
|
148
|
+
request(`https://${siteSettings.nodeEnv}/quote/resources/mod-alytics/modutils.min.js.map`)
|
|
149
|
+
.on('response', resp => {
|
|
150
|
+
if (resp.statusCode !== 200) {
|
|
151
|
+
throw new Error(`${resp.statusCode} Error while fetching modutils.min.js.map`);
|
|
152
|
+
} else {
|
|
153
|
+
replaceModutilsSrc(gulp, gulpPlugins, siteSettings, siteData);
|
|
154
|
+
}
|
|
155
|
+
})
|
|
156
|
+
.pipe(source('modutils.min.js.map'))
|
|
157
|
+
.pipe(gulp.dest(`${siteSettings.srcFolder}/resources/scripts/mod-utils`))
|
|
158
|
+
.on('finish', resolve);
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function copyAbandonmentJs(gulp, gulpPlugins, siteSettings, siteData) {
|
|
164
|
+
return new Promise(resolve => {
|
|
165
|
+
request(`https://${siteSettings.nodeEnv}/quote/resources/shared-resources/scripts/abandonment/abandonment.min.js`)
|
|
166
|
+
.on('response', resp => {
|
|
167
|
+
if (resp.statusCode !== 200) {
|
|
168
|
+
throw new Error(`${resp.statusCode} Error while fetching abandonment.min.js`);
|
|
169
|
+
}
|
|
170
|
+
})
|
|
171
|
+
.pipe(source('abandonment.min.js'))
|
|
172
|
+
.pipe(hash({
|
|
173
|
+
hashLength: 20,
|
|
174
|
+
template: 'abandonment-<%= hash %>.min.js'
|
|
175
|
+
}))
|
|
176
|
+
.pipe(tap(function(file, t){
|
|
177
|
+
abandonmentJsFileName = path.basename(file.path);
|
|
178
|
+
}))
|
|
179
|
+
.pipe(gulp.dest(`${siteSettings.srcFolder}/resources/scripts/abandonment`))
|
|
180
|
+
.on('finish', resolve);
|
|
181
|
+
})
|
|
182
|
+
.then(() => {
|
|
183
|
+
return new Promise(resolve => {
|
|
184
|
+
request(`https://${siteSettings.nodeEnv}/quote/resources/shared-resources/scripts/abandonment/abandonment.min.js.map`)
|
|
185
|
+
.on('response', resp => {
|
|
186
|
+
if (resp.statusCode !== 200) {
|
|
187
|
+
throw new Error(`${resp.statusCode} Error while fetching abandonment.min.js.map`);
|
|
188
|
+
} else {
|
|
189
|
+
replaceAbandonmentJsSrc(gulp, gulpPlugins, siteSettings, siteData);
|
|
190
|
+
}
|
|
191
|
+
})
|
|
192
|
+
.pipe(source('abandonment.min.js.map'))
|
|
193
|
+
.pipe(gulp.dest(`${siteSettings.srcFolder}/resources/scripts/abandonment`))
|
|
194
|
+
.on('finish', resolve);
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
function copyFooterComponentJs(gulp, gulpPlugins, siteSettings, siteData) {
|
|
200
|
+
return new Promise(resolve => {
|
|
201
|
+
request(`https://${siteSettings.nodeEnv}/quote/resources/shared-resources/scripts/footer/footer-component.min.js`)
|
|
202
|
+
.on('response', resp => {
|
|
203
|
+
if (resp.statusCode !== 200) {
|
|
204
|
+
throw new Error(`${resp.statusCode} Error while fetching footer-component.min.js`);
|
|
205
|
+
}
|
|
206
|
+
})
|
|
207
|
+
.pipe(source('footer-component.min.js'))
|
|
208
|
+
.pipe(hash({
|
|
209
|
+
hashLength: 20,
|
|
210
|
+
template: 'footer-component-<%= hash %>.min.js'
|
|
211
|
+
}))
|
|
212
|
+
.pipe(tap(function(file, t){
|
|
213
|
+
footerComponentJsFileName = path.basename(file.path);
|
|
214
|
+
}))
|
|
215
|
+
.pipe(gulp.dest(`${siteSettings.srcFolder}/resources/scripts/footer`))
|
|
216
|
+
.on('finish', resolve);
|
|
217
|
+
})
|
|
218
|
+
.then(() => {
|
|
219
|
+
return new Promise(resolve => {
|
|
220
|
+
request(`https://${siteSettings.nodeEnv}/quote/resources/shared-resources/scripts/footer/footer-component.min.js.map`)
|
|
221
|
+
.on('response', resp => {
|
|
222
|
+
if (resp.statusCode !== 200) {
|
|
223
|
+
throw new Error(`${resp.statusCode} Error while fetching footer-component.min.js.map`);
|
|
224
|
+
} else {
|
|
225
|
+
replaceFooterComponentJsSrc(gulp, gulpPlugins, siteSettings, siteData);
|
|
226
|
+
}
|
|
227
|
+
})
|
|
228
|
+
.pipe(source('footer-component.min.js.map'))
|
|
229
|
+
.pipe(gulp.dest(`${siteSettings.srcFolder}/resources/scripts/footer`))
|
|
230
|
+
.on('finish', resolve);
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
function copyFooterComponentStyles(gulp, gulpPlugins, siteSettings, siteData) {
|
|
236
|
+
return new Promise(resolve => {
|
|
237
|
+
request(`https://${siteSettings.nodeEnv}/quote/resources/shared-resources/styles/components/footer/mod-footer.min.css`)
|
|
238
|
+
.on('response', resp => {
|
|
239
|
+
if (resp.statusCode !== 200) {
|
|
240
|
+
throw new Error(`${resp.statusCode} Error while fetching mod-footer.min.css`);
|
|
241
|
+
}
|
|
242
|
+
})
|
|
243
|
+
.pipe(source('mod-footer.min.css'))
|
|
244
|
+
.pipe(hash({
|
|
245
|
+
hashLength: 20,
|
|
246
|
+
template: 'mod-footer-<%= hash %>.min.css'
|
|
247
|
+
}))
|
|
248
|
+
.pipe(tap(function(file, t){
|
|
249
|
+
modFooterStylesFileName = path.basename(file.path);
|
|
250
|
+
}))
|
|
251
|
+
.pipe(gulp.dest(`${siteSettings.srcFolder}/resources/styles/components/footer`))
|
|
252
|
+
.on('finish', resolve);
|
|
253
|
+
})
|
|
254
|
+
.then(() => {
|
|
255
|
+
return new Promise(resolve => {
|
|
256
|
+
request(`https://${siteSettings.nodeEnv}/quote/resources/shared-resources/styles/components/footer/qs-footer.min.css`)
|
|
257
|
+
.on('response', resp => {
|
|
258
|
+
if (resp.statusCode !== 200) {
|
|
259
|
+
throw new Error(`${resp.statusCode} Error while fetching qs-footer.min.css`);
|
|
260
|
+
}
|
|
261
|
+
})
|
|
262
|
+
.pipe(source('qs-footer.min.css'))
|
|
263
|
+
.pipe(hash({
|
|
264
|
+
hashLength: 20,
|
|
265
|
+
template: 'qs-footer-<%= hash %>.min.css'
|
|
266
|
+
}))
|
|
267
|
+
.pipe(tap(function(file, t){
|
|
268
|
+
qsFooterStylesFileName = path.basename(file.path);
|
|
269
|
+
}))
|
|
270
|
+
.pipe(gulp.dest(`${siteSettings.srcFolder}/resources/styles/components/footer`))
|
|
271
|
+
.on('finish', resolve);
|
|
272
|
+
});
|
|
273
|
+
})
|
|
274
|
+
.then(() => {
|
|
275
|
+
replaceFooterStylesReference(gulp, gulpPlugins, siteSettings, siteData);
|
|
276
|
+
replaceFooterStylesReferenceInMap(gulp, gulpPlugins, siteSettings, siteData);
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
|
|
57
280
|
module.exports = function(gulp, gulpPlugins, siteSettings, siteData) {
|
|
58
281
|
return function() {
|
|
59
282
|
const { nodeEnv } = siteSettings;
|
|
@@ -61,6 +284,6 @@ module.exports = function(gulp, gulpPlugins, siteSettings, siteData) {
|
|
|
61
284
|
throw new Error('Missing environment variables. Did you start with gulp instead of npm run...?');
|
|
62
285
|
}
|
|
63
286
|
|
|
64
|
-
return
|
|
287
|
+
return copyModalytics(gulp, gulpPlugins, siteSettings, siteData) && copyAbandonmentJs(gulp, gulpPlugins, siteSettings, siteData) && copyFooterComponentJs(gulp, gulpPlugins, siteSettings, siteData) && copyFooterComponentStyles(gulp, gulpPlugins, siteSettings, siteData) && copyModutils(gulp, gulpPlugins, siteSettings, siteData);
|
|
65
288
|
};
|
|
66
289
|
};
|