-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
46 lines (41 loc) · 1.26 KB
/
gulpfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
let gulp = require('gulp'),
concat = require('gulp-concat'),
replace = require('gulp-replace'),
replaceTask = require('gulp-replace-task'),
gulpTap = require('gulp-tap'),
cleanCss = require('gulp-clean-css'),
minifyHtml = require('gulp-minify-html')
let assetsMemory = ''
/*
Desc: Add additional rules that need to be replaced (@17-10-12).
Example: mjml default max-width=600px, And did not provide modification
*/
let needReplaceRules = [
{
match: 'width:600px',
replacement: 'width:666px'
}
]
gulp.task('get-css', () => {
return gulp.src(['./src/assets/*.css'], {read: true})
.pipe(cleanCss({compatibility: 'ie8'}))
.pipe(concat('mixing.css'))
.pipe(minifyHtml({empty: true}))
.pipe(gulpTap(file => {
assetsMemory += file.contents.toString()
}))
})
gulp.task('inject-css', ['get-css'], () => {
let stableCssCode = `#outlook a { padding: 0; }`
let needInjectCss = `${stableCssCode}\n${assetsMemory}`
return gulp.src('./dist/*.html')
.pipe(replaceTask({
patterns: needReplaceRules,
usePrefix: false
}))
.pipe(replace(`${assetsMemory}\n`, ''))
.pipe(replace(stableCssCode, needInjectCss))
.pipe(minifyHtml({empty: true}))
.pipe(gulp.dest('./dist/'))
})
gulp.task('default', ['inject-css'])