mod-build 3.6.8 → 3.6.9--beta.2

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 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)
@@ -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, /.*modalytics.*/],
7
- dontUpdateReference: [/^\/favicon.ico$/g, '.html', '.txt', /modlogo([\w|\s|-])*\.(?:svg)/g, /.*modalytics.*/],
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 replaceModalyticsSrcInHead(gulp, gulpPlugins, siteSettings, siteData) {
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 copyCurrentModalytics(gulp, gulpPlugins, siteSettings, siteData) {
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
- replaceModalyticsSrcInHead(gulp, gulpPlugins, siteSettings, siteData);
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-utils/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 copyCurrentModalytics(gulp, gulpPlugins, siteSettings, siteData);
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
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mod-build",
3
- "version": "3.6.8",
3
+ "version": "3.6.9--beta.2",
4
4
  "description": "Share components for S3 sites.",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"