forked from layui/layui
-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
146 lines (113 loc) · 3.32 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
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/**
layui构建
*/
var pkg = require('./package.json');
var gulp = require('gulp');
var uglify = require('gulp-uglify');
var minify = require('gulp-minify-css');
var concat = require('gulp-concat');
var rename = require('gulp-rename');
var header = require('gulp-header');
var del = require('del');
var gulpif = require('gulp-if');
var minimist = require('minimist');
//获取参数
var argv = require('minimist')(process.argv.slice(2), {
default: {
ver: 'all'
}
})
//注释
,note = [
'/** <%= pkg.name %>-v<%= pkg.version %> LGPL License By <%= pkg.homepage %> */\n <%= js %>'
,{pkg: pkg, js: ';'}
]
//模块
,mods = 'laytpl,laypage,laydate,jquery,layer,element,upload,form,tree,util,flow,layedit,code'
//任务
,task = {
minjs: function(ver) {
//可指定模块压缩,eg:gulp minjs --mod layer,laytpl
var mod = argv.mod ? function(){
return '(' + argv.mod.replace(/,/g, '|') + ')';
}() : ''
,src = [
'./src/**/*'+ mod +'.js'
,'!./src/lay/all.js'
,'!./src/lay/mod.js'
]
,dir = ver === 'open' ? 'release' : 'build';
//过滤 layim
if(ver === 'open' || argv.open){
src.push('!./src/lay/**/layim.js');
}
return gulp.src(src).pipe(uglify())
.pipe(header.apply(null, note))
.pipe(gulp.dest('./'+ dir));
}
,alljs: function(ver){
var src = ['./src/**/{layui,all,'+ mods +'}.js']
,dir = ver === 'open' ? 'release' : 'build';
return gulp.src(src).pipe(uglify())
.pipe(concat('layui.all.js', {newLine: ''}))
.pipe(header.apply(null, note))
.pipe(gulp.dest('./'+ dir +'/lay/dest/'));
}
,mincss: function(ver){
var src = ['./src/css/**/*.css']
,dir = ver === 'open' ? 'release' : 'build'
,noteNew = JSON.parse(JSON.stringify(note));
if(ver === 'open' || argv.open){
src.push('!./src/css/**/layim.css');
}
noteNew[1].js = '';
return gulp.src(src).pipe(minify({
compatibility: 'ie7'
})).pipe(header.apply(null, noteNew))
.pipe(gulp.dest('./'+ dir +'/css'));
}
,font: function(ver){
var dir = ver === 'open' ? 'release' : 'build';
return gulp.src('./src/font/*')
.pipe(rename({}))
.pipe(gulp.dest('./'+ dir +'/font'));
}
,images: function(ver){
var src = [
'./src/**/*.png'
,'./src/**/*.jpg'
,'./src/**/*.gif'
]
,dir = ver === 'open' ? 'release' : 'build';
if(ver === 'open' || argv.open){
src.push('!./src/**/layim/**/*.*');
}
gulp.src(src).pipe(rename({}))
.pipe(gulp.dest('./'+ dir));
}
};
//清理
gulp.task('clear', function(cb) {
return del(['./build/*'], cb);
});
gulp.task('clearRelease', function(cb) {
return del(['./release/*'], cb);
});
gulp.task('minjs', task.minjs); //压缩js模块
gulp.task('modjs', task.modjs); //打包PC完整模块,即各模块的合并
gulp.task('alljs', task.alljs); //打包PC合并版,即包含layui.js和所有模块的合并
gulp.task('mincss', task.mincss); //压缩css文件
gulp.task('font', task.font); //复制iconfont文件
gulp.task('images', task.images); //复制组件可能所需的图片
//开源版
gulp.task('default', ['clearRelease'], function(){
for(var key in task){
task[key]('open');
}
});
//完整任务
gulp.task('all', ['clear'], function(){
for(var key in task){
task[key]();
}
});