const { src,task,watch,dest,lastRun,series } = require('gulp');
const $ = require('gulp-load-plugins')();
const moment = require('moment');
const bs = require('browser-sync').create();
//压缩scss文件任务
async function listenSass(){
await src('./src/**/*.scss',{since:lastRun(listenCss)})
.pipe($.plumber({ //处理出错时进程终端
errorHandler:function(error){
this.emit('end');
}
}))
.pipe($.sourcemaps.init())
.pipe($.sass())
.pipe($.cssnano({
zindex:false
}))
.pipe($.rename({
suffix:'.min'
}))
.pipe($.sourcemaps.write())
.pipe(dest('./dist/'))
.pipe(bs.stream());
};
//压缩less文件任务
async function listenLess(){
await src('./src/less/*.less',{since:lastRun(listenCss)})
.pipe($.plumber({
errorHandler:function(error){
this.emit('end');
}
}))
.pipe($.sourcemaps.init())
.pipe($.less())
.pipe($.cssnano({
zindex:false
}))
.pipe($.rename({
suffix:'.min'
}))
.pipe($.sourcemaps.write())
.pipe(dest('./dist/'))
.pipe(bs.stream());
};
//压缩Css文件的任务
async function listenCss(){
await src('./src/**/*.css',{since:lastRun(listenCss)})
.pipe($.plumber({
errorHandler:function(error){
this.emit('end');
}
}))
.pipe($.sourcemaps.init())
.pipe($.cssnano({
zindex:false
}))
.pipe($.rename({
'suffix':'.min'
}))
.pipe($.sourcemaps.write())
.pipe(dest('./dist/'))
.pipe(bs.stream());
};
//压缩Zip文件的任务
async function listenZip(){
var timestamp = moment().format("YYY-MM-DD_");
await src('./src/**/*.zip',{since:lastRun(listenCss)})
.pipe($.plumber({
errorHandler:function(error){
this.emit('end');
}
}))
.pipe($.sourcemaps.init())
.pipe($.zip(timestamp+".zip"))
.pipe($.rename({
'suffix':'.min'
}))
.pipe($.sourcemaps.write())
.pipe(dest('./dist/'))
.pipe(bs.stream());
};
//压缩js文件任务
async function listenJs(){
await src('./src/js/*.js',{since:lastRun(listenCss)})
.pipe($.plumber({
errorHandler:function(error){
this.emit('end');
}
}))
.pipe($.sourcemaps.init())
.pipe($.babel({
presets: ['@babel/env']
}))
.pipe($.uglify({
parse: {
html5_comments: true
},
compress: {
drop_console:false,
},
toplevel: false,
}))
.pipe($.rename({
suffix:'.min',
}))
.pipe($.sourcemaps.write())
.pipe(dest('./dist/'))
.pipe(bs.stream());
};
//压缩html文件任务
async function listenHtml(){
await src('./src/html/*.html',{since:lastRun(listenCss)})
.pipe($.plumber({
errorHandler:function(error){
this.emit('end');
}
}))
.pipe($.sourcemaps.init())
.pipe($.htmlmin({
collapseWhitespace: true,
caseSensitive:false,
removeTagWhitespace:false,
}))
.pipe($.rename({
suffix:'.min'
}))
.pipe($.sourcemaps.write())
.pipe(dest('./dist/'))
.pipe(bs.stream());
};
//压缩图片文件的任务
async function listenImage(){
await src('./src/**/*.{jpg,png,svg,gif}',{since:lastRun(listenCss)})
.pipe($.plumber({
errorHandler:function(error){
this.emit('end');
}
})) .pipe($.sourcemaps.init())
.pipe($.cache($.imagemin([
$.imagemin.gifsicle({
interlaced: true,
optimizationLevel:1,
}),
$.imagemin.mozjpeg({
quality: 75,
progressive: true,
}),
$.imagemin.optipng({
optimizationLevel: 5,
interlaced: false,
errorRecovery:true,
}),
$.imagemin.svgo({
plugins: [
{removeViewBox: false},
{cleanupIDs: false}
]
})
])))
.pipe($.rename({
'suffix':'.min'
}))
.pipe($.sourcemaps.write())
.pipe(dest('./dist/'))
.pipe(bs.stream());
};
//初始化服务器
async function bsInit(){
await bs.init({
'server':{
baseDir:'./'
}
});
};
//监听任务
function watchTaks(){
watch('./src/css/*.css', series(listenCss));
watch('./src/less/*.less', series(listenJs));
watch('./src/scss/*.scss', series(listenSass));
watch('./src/js/*.js', series(listenJs));
watch('./src/html/*.html', series(listenHtml));
watch('./src/image/*.{jpg,png,svg,gif}', series(listenImage));
};
exports.default = function(){
bsInit();
watchTaks();
};
Gulp学习--我的gulpfile.js代码(已解决大部分问题)
最新推荐文章于 2026-06-08 07:28:25 发布
本文详细介绍了使用Gulp进行自动化构建的过程,包括压缩Sass、Less、CSS、JS、HTML和图片文件,以及初始化服务器和监听文件变化。通过Gulp插件实现文件压缩、源码映射生成、错误处理等功能,提高前端开发效率。

5097

被折叠的 条评论
为什么被折叠?



