/
gulpfile.js
50 lines (42 loc) · 1.46 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
47
48
49
50
const gulp = require('gulp')
const fsp = require('fs-promise')
const $ = require('gulp-load-plugins')()
const runSequence = require('run-sequence')
const templates = require('./templates')
const template = process.env.template || 'px'
let staticDir = `.`
let paths = {
src : `${staticDir}/src`,
dist: `${staticDir}/dist`
}
gulp.task('icons:sprite', async () => {
let dirs = await fsp.readdir(paths.src)
dirs = dirs.filter((item) => item[0] !== '.')
dirs.unshift('')
let fns = dirs.map((dir) => {
return new Promise((resolve, reject) => {
let name = dir === '' ? '_' : dir
let src = name !== '_' ? `${paths.src}/${dir}/*.+(gif|png|jpg)` : `${paths.src}/*.+(gif|png|jpg)`
gulp.src(src)
.pipe($.spritesmith({
padding: 15,
imgName: `${name}.png`,
cssName: `${name}-${template}.scss`,
cssTemplate(sprite){
return templates[template](name, sprite)
}
}))
.pipe(gulp.dest(paths.dist))
.on('end', resolve)
})
})
return await Promise.all(fns)
})
gulp.task('icons:css', ['icons:sprite'], () => {
return gulp.src(`${paths.dist}/*.scss`)
.pipe($.sass().on('error', $.sass.logError))
.pipe(gulp.dest(paths.dist))
})
gulp.task('default', () => {
gulp.start('icons:css')
})