-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.style.js
102 lines (95 loc) · 3.07 KB
/
gulpfile.style.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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
const gulp = require('gulp')
const nameDeps = require('app-name')
const loadDeps = require('load-deps')
const camelCase = require('camelcase')
const stripDeps = ['gulp']
const server = require('./gulpfile.server')
const renameFn = name => {
return camelCase(nameDeps(name, stripDeps))
}
const $ = loadDeps('*', {
renameKey: renameFn
})
const d = new Date()
const h = ('0' + d.getHours()).slice(-2)
const m = ('0' + d.getMinutes()).slice(-2)
const s = ('0' + d.getSeconds()).slice(-2)
const instant = '[' + `${h}:${m}:${s}`.grey + ']'
const style = ({
source,
concat,
rename,
dest,
injection,
reload
}) => {
return new Promise((resolve, reject) => {
const env = process.env.NODE_ENV
const ext = extension => source.indexOf(extension) !== -1
const fileName = source.toString().split('.').shift().split('/').pop()
const finalName = () => {
if (rename === '.min') {
if (fileName === '*') {
if (concat) {
return concat.toString().split('.').shift() + rename + '.css'
} else {
return fileName + rename + '.css'
}
} else {
return fileName + rename + '.css'
}
}
}
const stream = [
gulp.src(source),
$.autoprefixer(),
$.cssPurge(),
$.csscomb(),
$.cssbeautify({
indent: ' ',
openbrace: 'end-of-line',
autosemicolon: true
}),
$.sourcemaps.init(),
$.cleanCss({
compatibility: 'ie8',
keepSpecialComments: 'none',
specialComments: 'none',
debug: true,
removeEmpty: true
}, details => {
console.log(instant, 'cleanCSS'.bold.cyan)
console.log(instant, 'Output: '.magenta + `${finalName() || details.name}`)
console.log(instant, 'Original: '.magenta + `${(details.stats.originalSize / 1024).toFixed(2)}kb`)
console.log(instant, 'Minified: '.magenta + `${(details.stats.minifiedSize / 1024).toFixed(2)}kb`)
})
]
if (ext('.sass') || ext('.scss')) {
stream.splice(1, 0, $.sass())
} else {
if (concat) {
stream.splice(1, 0, $.concat(concat))
}
}
if (rename === '.min') {
stream.push($.rename(path => {
path.basename += '.min'
}))
} else {
stream.push($.rename(rename))
}
stream.push($.sourcemaps.write('.'),
gulp.dest(dest).on('end', () => {
if (injection && env === 'development') {
$.runSequence('make:injection')
} else {
if (reload) {
server.hot()
}
}
})
)
$.pump(stream, resolve)
})
}
module.exports = style