mod-build 3.6.22-beta.6 → 3.6.23-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/gulp-tasks/build.js +1 -1
- package/gulp-tasks/grab-shared-scripts.js +36 -10
- package/gulp-tasks/serve.js +2 -8
- package/gulp-tasks/tasks.js +0 -12
- package/package.json +1 -1
- package/gulp-tasks/grab-global-images.js +0 -102
package/gulp-tasks/build.js
CHANGED
|
@@ -10,7 +10,7 @@ module.exports = function(gulp, gulpPlugins, siteSettings, siteData) {
|
|
|
10
10
|
if (siteData.isQSPage) {
|
|
11
11
|
sequenceOpts = ['clean', 'grab-cdn', 'grab-shared-components', 'grab-shared-scripts', 'templates', 'styles', 'grab-theme-json', 'combine-files', 'grab-images', 'copy-json', 'js-lint', 'html-min', 'css-min', 'js-min', 'img-min', 'extras', 'brand', 'copy-files-to-build-path', 'cache-bust', 'grab-tooltips-json', 'build-stat'];
|
|
12
12
|
} else {
|
|
13
|
-
sequenceOpts = ['clean', 'grab-cdn', 'grab-shared-components', 'grab-shared-scripts', 'templates', 'styles', 'combine-files', 'grab-images', 'js-lint', 'html-min',
|
|
13
|
+
sequenceOpts = ['clean', 'grab-cdn', 'grab-shared-components', 'grab-shared-scripts', 'templates', 'styles', 'combine-files', 'grab-images', 'js-lint', 'html-min', 'css-min', 'js-min', 'img-min', 'extras', 'brand', 'cache-bust', 'grab-tooltips-json', 'build-stat'];
|
|
14
14
|
}
|
|
15
15
|
} else {
|
|
16
16
|
sequenceOpts = ['clean', 'grab-cdn', 'grab-shared-components', 'grab-shared-scripts', 'templates', 'styles', 'js-lint', 'html-min', 'css-min', 'js-min', 'img-min', 'extras', 'brand', 'cache-bust', 'build-stat'];
|
|
@@ -28,13 +28,16 @@ function replaceFootAssetScripts(gulp, gulpPlugins, siteSettings, siteData) {
|
|
|
28
28
|
.pipe(replace(/"(?:(?!"|js")[\s\S])+(modutils|mod-utils.*?)js"/, resourcePath + '/mod-utils/' + fileNames.modUtilsFileName))
|
|
29
29
|
.pipe(replace(/"(?:(?!"|")[\s\S])+(footer\/footer-component.*?)js"/, resourcePath + '/footer/' + fileNames.footerComponentJsFileName))
|
|
30
30
|
.pipe(replace(/"(?:(?!"|")[\s\S])+(mod-form\/mod-form.*?)js"/, resourcePath + '/mod-form/' + fileNames.modFormFileName))
|
|
31
|
+
.pipe(replace(/"(?:(?!"|")[\s\S])+(mod-form\/form\/mod-form.*?)js"/, resourcePath + '/mod-form/form/' + fileNames.newModFormFileName))
|
|
31
32
|
.pipe(replace(/"(?:(?!"|")[\s\S])+(qs-form.*?)js"/, resourcePath + '/mod-form/' + fileNames.qsFormFileName))
|
|
32
33
|
.pipe(gulp.dest(siteSettings.srcFolder + '/shared-components/foot-assets'));
|
|
33
34
|
}
|
|
34
|
-
function
|
|
35
|
-
const
|
|
35
|
+
function replaceAbandonmentJsCssSrc(gulp, gulpPlugins, siteSettings, siteData) {
|
|
36
|
+
const jsResourcePath = isQuotePageOrUseRelativePath ? 'resources/scripts/abandonment/' : '/resources/scripts/abandonment/';
|
|
37
|
+
const cssResourcePath = isQuotePageOrUseRelativePath ? 'resources/styles/components/abandonment/' : '/resources/styles/components/abandonment/';
|
|
36
38
|
return gulp.src(siteSettings.srcFolder + '/templates/abandonment/*.html')
|
|
37
|
-
.pipe(replace(/"(?:(?!"|")[\s\S])+(abandonment\/abandonment.*?)js"/,
|
|
39
|
+
.pipe(replace(/"(?:(?!"|")[\s\S])+(abandonment\/abandonment.*?)js"/, jsResourcePath + fileNames.abandonmentJsFileName))
|
|
40
|
+
.pipe(replace(/"(?:(?!"|")[\s\S])+(components\/abandonment\/abandonment.*?)css"/, cssResourcePath + fileNames.abandonmentStylesFileName))
|
|
38
41
|
.pipe(gulp.dest(siteSettings.srcFolder + '/templates/abandonment'));
|
|
39
42
|
}
|
|
40
43
|
function replaceFooterStylesReference(gulp, gulpPlugins, siteSettings, siteData) {
|
|
@@ -73,18 +76,21 @@ function getResource(url, config = {}, fn, fnArray) {
|
|
|
73
76
|
|
|
74
77
|
return new Promise(resolve => {
|
|
75
78
|
const file = getFileFromURL(url);
|
|
76
|
-
|
|
79
|
+
const doNotAddHash = ['mod-form-beta.min.js']
|
|
80
|
+
let stream = request(`${resourceURL}/${url}`)
|
|
77
81
|
.on('response', resp => {
|
|
78
82
|
if (resp.statusCode !== 200) {
|
|
79
83
|
throw new Error(`${resp.statusCode} Error while fetching ${file}`);
|
|
80
84
|
}
|
|
81
85
|
})
|
|
82
86
|
.pipe(source(`${file}`))
|
|
83
|
-
.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
87
|
+
if (!doNotAddHash.includes(file)) {
|
|
88
|
+
stream = stream.pipe(hash({
|
|
89
|
+
hashLength: 20,
|
|
90
|
+
template: file.replace(/^([^.]*)\.(.*)$/, '$1-<%= hash %>.$2')
|
|
91
|
+
}))
|
|
92
|
+
}
|
|
93
|
+
stream.pipe(tap(function(file, t) {
|
|
88
94
|
fileNames[config.fileName] = path.basename(file.path);
|
|
89
95
|
}))
|
|
90
96
|
.pipe(config.gulp.dest(`${config.siteSettings.srcFolder}/resources/${config.dest}`))
|
|
@@ -140,6 +146,16 @@ const TASKS = {
|
|
|
140
146
|
srcReplaceFn: null,
|
|
141
147
|
additionalSrcReplaceFns: []
|
|
142
148
|
},
|
|
149
|
+
copyAbandonmentComponentStyles: {
|
|
150
|
+
url: `shared-resources/styles/components/abandonment/abandonment.min.css`,
|
|
151
|
+
config: {
|
|
152
|
+
fileName: 'abandonmentStylesFileName',
|
|
153
|
+
dest: 'styles/components/abandonment',
|
|
154
|
+
mapUrl: null,
|
|
155
|
+
},
|
|
156
|
+
srcReplaceFn: null,
|
|
157
|
+
additionalSrcReplaceFns: []
|
|
158
|
+
},
|
|
143
159
|
copyAbandonmentJs: {
|
|
144
160
|
url: `shared-resources/scripts/abandonment/abandonment.min.js`,
|
|
145
161
|
config: {
|
|
@@ -147,7 +163,7 @@ const TASKS = {
|
|
|
147
163
|
dest: 'scripts/abandonment',
|
|
148
164
|
mapUrl: `shared-resources/scripts/abandonment/abandonment.min.js.map`,
|
|
149
165
|
},
|
|
150
|
-
srcReplaceFn:
|
|
166
|
+
srcReplaceFn: replaceAbandonmentJsCssSrc,
|
|
151
167
|
additionalSrcReplaceFns: []
|
|
152
168
|
},
|
|
153
169
|
copyFooterComponentJs: {
|
|
@@ -170,6 +186,16 @@ const TASKS = {
|
|
|
170
186
|
srcReplaceFn: null,
|
|
171
187
|
additionalSrcReplaceFns: []
|
|
172
188
|
},
|
|
189
|
+
copyNewModForm: {
|
|
190
|
+
url: `mod-form/form/mod-form-beta.min.js`,
|
|
191
|
+
mapUrl: `mod-form/form/mod-form-beta.min.js.map`,
|
|
192
|
+
config: {
|
|
193
|
+
fileName: 'newModFormFileName',
|
|
194
|
+
dest: 'scripts/mod-form/form'
|
|
195
|
+
},
|
|
196
|
+
srcReplaceFn: null,
|
|
197
|
+
additionalSrcReplaceFns: []
|
|
198
|
+
},
|
|
173
199
|
copyQsForm: {
|
|
174
200
|
url: `mod-form/qs-form.min.js`,
|
|
175
201
|
config: {
|
package/gulp-tasks/serve.js
CHANGED
|
@@ -8,7 +8,7 @@ module.exports.src = function(gulp, gulpPlugins, siteSettings, siteData) {
|
|
|
8
8
|
} else if (siteData.isQSPage) {
|
|
9
9
|
sequenceOpts = ['clean', 'grab-cdn', 'grab-shared-components', 'grab-shared-scripts', 'templates', 'styles', 'grab-theme-json', 'grab-tooltips-json', 'combine-files', 'grab-images', 'js-lint'];
|
|
10
10
|
} else {
|
|
11
|
-
sequenceOpts = ['clean', 'grab-cdn', 'grab-shared-components', 'grab-shared-scripts', 'templates', 'styles', 'grab-tooltips-json', 'combine-files', 'grab-images',
|
|
11
|
+
sequenceOpts = ['clean', 'grab-cdn', 'grab-shared-components', 'grab-shared-scripts', 'templates', 'styles', 'grab-tooltips-json', 'combine-files', 'grab-images', 'js-lint'];
|
|
12
12
|
}
|
|
13
13
|
runSequence(...sequenceOpts, () => {
|
|
14
14
|
// Run a BrowserSync server
|
|
@@ -36,13 +36,7 @@ module.exports.src = function(gulp, gulpPlugins, siteSettings, siteData) {
|
|
|
36
36
|
]).on('change', gulpPlugins.browserSync.reload);
|
|
37
37
|
|
|
38
38
|
// If templates changed, rerun templates task
|
|
39
|
-
|
|
40
|
-
gulp.watch(siteSettings.srcFolder + '/' + siteSettings.templatesSubfolder + '/**/*.html', function() {
|
|
41
|
-
runSequence('templates','grab-global-images')
|
|
42
|
-
});
|
|
43
|
-
} else {
|
|
44
|
-
gulp.watch(siteSettings.srcFolder + '/' + siteSettings.templatesSubfolder + '/**/*.html', ['templates'])
|
|
45
|
-
}
|
|
39
|
+
gulp.watch(siteSettings.srcFolder + '/' + siteSettings.templatesSubfolder + '/**/*.html', ['templates']);
|
|
46
40
|
|
|
47
41
|
// If styles changed, rerun styles task
|
|
48
42
|
gulp.watch(siteSettings.srcFolder + '/' + siteSettings.stylesSubfolder + '/**/*.scss', ['styles']);
|
package/gulp-tasks/tasks.js
CHANGED
|
@@ -346,18 +346,6 @@ module.exports = function() {
|
|
|
346
346
|
|
|
347
347
|
return require(opts.gulpTasksFolderPath + '/grab-images')(opts.gulp, opts.gulpSettings, opts.siteData);
|
|
348
348
|
}
|
|
349
|
-
},
|
|
350
|
-
|
|
351
|
-
// Get global images
|
|
352
|
-
'grab-global-images': {
|
|
353
|
-
subtasks: [],
|
|
354
|
-
func: function(opts) {
|
|
355
|
-
if ('undefined' === typeof opts.gulpTasksFolderPath) {
|
|
356
|
-
opts.gulpTasksFolderPath = '.';
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
return require(opts.gulpTasksFolderPath + '/grab-global-images')(opts.gulp, opts.gulpSettings, opts.siteData);
|
|
360
|
-
}
|
|
361
349
|
},
|
|
362
350
|
|
|
363
351
|
// Copy json files to dist
|
package/package.json
CHANGED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
var fs = require('fs');
|
|
2
|
-
var request = require('request');
|
|
3
|
-
var source = require('vinyl-source-stream');
|
|
4
|
-
var replace = require('gulp-replace');
|
|
5
|
-
|
|
6
|
-
var images = [];
|
|
7
|
-
|
|
8
|
-
function streamToDestination(gulp, siteSettings, url, fileName) {
|
|
9
|
-
var finalDestination;
|
|
10
|
-
|
|
11
|
-
if (!fs.existsSync(siteSettings.distFolder)) {
|
|
12
|
-
finalDestination = siteSettings.srcFolder;
|
|
13
|
-
} else {
|
|
14
|
-
finalDestination = siteSettings.distFolder;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
return new Promise(resolve => { // eslint-disable-line no-undef
|
|
18
|
-
request(url)
|
|
19
|
-
.on('response', resp => {
|
|
20
|
-
if (resp.statusCode !== 200 && resp.statusCode !== 206) {
|
|
21
|
-
throw new Error(`${resp.statusCode} Error while fetching ${fileName}`);
|
|
22
|
-
} else {
|
|
23
|
-
images.push(fileName);
|
|
24
|
-
}
|
|
25
|
-
})
|
|
26
|
-
.pipe(source(fileName))
|
|
27
|
-
.pipe(gulp.dest(`${finalDestination}/resources/images/`))
|
|
28
|
-
.on('finish', resolve);
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
function replaceImagePath(gulp, siteSettings) {
|
|
33
|
-
var finalDestination;
|
|
34
|
-
|
|
35
|
-
if (!fs.existsSync(siteSettings.distFolder)) {
|
|
36
|
-
finalDestination = siteSettings.tmpFolder;
|
|
37
|
-
} else {
|
|
38
|
-
finalDestination = siteSettings.distFolder;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
var stream = gulp.src(`${finalDestination}/index.html`);
|
|
42
|
-
|
|
43
|
-
if (images.length) {
|
|
44
|
-
images.forEach(function(image) {
|
|
45
|
-
stream = stream.pipe(replace(new RegExp(`"(?:(?!"|")[\\s\\S])+(${image})"`, 'gm'), '"/resources/images/' + image + '"'))
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
return stream.pipe(gulp.dest(finalDestination))
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const getTags = (string) => {
|
|
52
|
-
const regExs = [/<img.*?src="(.*?)"[^\>]+>/g, /<use.*?href="(.*?)".*?>/g, /<source.*?srcset="(.*?)".*?>/g, /url\('#{\$path}.*?'\)/g];
|
|
53
|
-
let tags = [];
|
|
54
|
-
|
|
55
|
-
regExs.forEach((regEx) => {
|
|
56
|
-
const match = string.match(regEx);
|
|
57
|
-
|
|
58
|
-
if (match) {
|
|
59
|
-
tags = [...tags, ...match];
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
return tags;
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
const getUrls = (tags) => {
|
|
67
|
-
const urls = [];
|
|
68
|
-
|
|
69
|
-
tags.forEach((tag) => {
|
|
70
|
-
if (tag) {
|
|
71
|
-
let url = tag;
|
|
72
|
-
url = url.match(/(https?:\/\/[^\s]+)/gim);
|
|
73
|
-
if (url) {
|
|
74
|
-
url = url[0];
|
|
75
|
-
url = url.replace(/"/g, "")
|
|
76
|
-
urls.push(url)
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
return [...new Set(urls)]; // eslint-disable-line no-undef
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
const parseImageSources = (gulp, siteSettings) => {
|
|
85
|
-
const text = fs.readFileSync(`${siteSettings.tmpFolder}/index.html`, 'utf8');
|
|
86
|
-
const textMatches = getTags(text);
|
|
87
|
-
return getUrls(textMatches);
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
module.exports = function(gulp, siteSettings, siteData) {
|
|
91
|
-
return async function() {
|
|
92
|
-
const urls = parseImageSources(gulp, siteSettings);
|
|
93
|
-
const urlsPromises = urls.map(async(url) => {
|
|
94
|
-
const fileName = await url.slice(url.lastIndexOf('/') + 1);
|
|
95
|
-
return await streamToDestination(gulp, siteSettings, url, fileName);
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
return await Promise.all(urlsPromises).then(function() { // eslint-disable-line no-undef
|
|
99
|
-
replaceImagePath(gulp, siteSettings)
|
|
100
|
-
})
|
|
101
|
-
};
|
|
102
|
-
};
|