// gulpfile.js
const gulp = require('gulp');
const sass = require('gulp-sass')(require('sass'));
const autoprefixer = require('gulp-autoprefixer');
const cssnano = require('gulp-cssnano');
const uglify = require('gulp-uglify');
const browserSync = require('browser-sync').create();
const imagemin = require('gulp-imagemin');
// 编译SCSS
gulp.task('styles', function() {
return gulp.src('src/scss/**/*.scss')
.pipe(sass().on('error', sass.logError))
.pipe(autoprefixer())
.pipe(cssnano())
.pipe(gulp.dest('dist/css'))
.pipe(browserSync.stream());
});
// 压缩JavaScript
gulp.task('scripts', function() {
return gulp.src('src/js/**/*.js')
.pipe(uglify())
.pipe(gulp.dest('dist/js'))
.pipe(browserSync.stream());
});
// 优化图片
gulp.task('images', function() {
return gulp.src('src/images/**/*')
.pipe(imagemin())
.pipe(gulp.dest('dist/images'));
});
// 监听文件变化
gulp.task('watch', function() {
browserSync.init({
server: {
baseDir: './'
}
});
gulp.watch('src/scss/**/*.scss', gulp.series('styles'));
gulp.watch('src/js/**/*.js', gulp.series('scripts'));
gulp.watch('src/images/**/*', gulp.series('images'));
gulp.watch('*.html').on('change', browserSync.reload);
});
// 默认任务
gulp.task('default', gulp.series('styles', 'scripts', 'images', 'watch'));