-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
150 lines (132 loc) · 3.92 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
139
140
141
142
143
144
145
146
147
148
149
150
var gulp = require("gulp");
var $ = require("gulp-load-plugins")(); // htmlmin, sass, cssnano, imagemin, cache, uglify, tmod
var del = require("del");
var browserSync = require('browser-sync').create();
// 定义目录路径
var app = {
srcPath: 'src/', // 源代码,文件目录
devPath: 'build/', // 文件整合之后的目录
prdPath: 'dist/' // 项目,发布目录上产部署
};
// 文件处理、导出
gulp.task('html', function (done) {
gulp.src(app.srcPath + '**/*.html')
.pipe(gulp.dest(app.devPath))
done();
})
gulp.task('scss', function (done) {
gulp.src(app.srcPath + 'scss/*.scss')
.pipe($.sass())
.pipe(gulp.dest(app.devPath + 'css'))
gulp.src(app.srcPath + 'lib/*.css')
.pipe(gulp.dest(app.devPath + 'lib'))
done();
})
gulp.task('js', function (done) {
gulp.src([app.srcPath + '**/*.js', '!' + app.srcPath + '**/*.min.js'])
.pipe($.babel())
.pipe(gulp.dest(app.devPath))
gulp.src([app.srcPath + '**/*.min.js'])
.pipe(gulp.dest(app.devPath))
done();
})
gulp.task('image', function (done) {
gulp.src(app.srcPath + '**/*.{jpg, png, gif}') // 要处理的图片目录为img目录下的所有的.jpg .png .gif 格式的图片;
.pipe($.cache($.imagemin({
progressive: true, // 是否渐进的优化
svgoPlugins: [{removeViewBox: false}], // svgo插件是否删除幻灯片
interlaced: true // 是否各行扫描
})))
.pipe(gulp.dest(app.devPath))
done();
})
gulp.task('tpl', function (done) {
gulp.src(app.srcPath + 'tpl/*.tpl')
.pipe($.tmod({
templateBase: app.srcPath + 'tpl', // 模板源码目录
type: 'amd', // 遵循规范类型
combo: true // 是否融合
}))
.pipe(gulp.dest(app.devPath + 'tpl'))
done();
});
// 监听
gulp.task('js-watch', ['js'], function(done){
browserSync.reload();
done();
});
gulp.task('scss-watch', ['scss'], function(done){
browserSync.reload();
done();
});
gulp.task('html-watch', ['html'], function(done){
browserSync.reload();
done();
});
gulp.task('image-watch', ['image'], function(done){
browserSync.reload();
done();
});
gulp.task('tpl-watch', ['tpl'], function(done){
browserSync.reload();
done();
});
// 清空已经打包的文件
gulp.task('delete', function (done) {
del([app.devPath, app.devPath]);
done();
})
// 构建项目
gulp.task('build', ['delete'], function (done) {
// 防止delete任务异步操作删除新构建的文件,故延时
setTimeout(function () {
gulp.start(['html', 'tpl', 'scss', 'js', 'image']);
done();
}, 1000)
})
// 开启服务
gulp.task('server', function (done) {
browserSync.init({
server: {
baseDir: [app.devPath + 'html', app.devPath] // 服务器页面目录,服务器根目录
},
port: 8080
});
done();
})
/* =============================== 常用命令分割线 ================================== */
// 默认为开发模式
gulp.task('default', ['dev'], function (done) {
done();
})
// 调试
gulp.task('dev', ['build'], function (done) {
gulp.start('server');
gulp.watch([app.srcPath + '**/*.html', app.srcPath + '**/*.tpl', app.srcPath + '**/*.scss', app.srcPath + '**/*.js', app.srcPath + '**/*.{jpg, png, gif}'],
[['html-watch'], ['tpl-watch'], ['scss-watch'], ['js-watch'], ['image-watch']]);
done();
})
// 打包项目
gulp.task('package', ['build'], function (done) {
// 等待build构建完成后才能打包
setTimeout(function () {
var options = {
removeComments: true, // 清除HTML注释
collapseWhitespace: true, // 压缩HTML
minifyJS: true, // 压缩页面JS
minifyCSS: true // 压缩页面CSS
};
gulp.src(app.devPath + '**/*.html')
.pipe($.htmlmin(options))
.pipe(gulp.dest(app.prdPath))
gulp.src(app.devPath + 'css/*.css', {})
.pipe($.cssnano())
.pipe(gulp.dest(app.prdPath + 'css'))
gulp.src(app.devPath + '**/*.js')
.pipe($.uglify())
.pipe(gulp.dest(app.prdPath))
gulp.src(app.devPath + '**/*.{jpg, png, gif}')
.pipe(gulp.dest(app.prdPath))
done();
}, 1000);
})