gulp的安装与使用主要参照的是博主的文章

gulp的使用

安装过程中的心得

  1. 安装gulp-cli是全局安装 power shell 管理员权限,用cnpm安装更快
  2. 安装完还要在hexo跟目录安装 gulp 才能在gitbash中使用gulp命令,不然报错不是local command
  3. 安装完这些基础就安装 需要的相应 压缩插件
  4. 其中安装完之后运行报错 gulp-imagemin 缺少什么"gif…"包,这个可能安装问题,重新卸载该插件,在安装即可。
  5. 同样在使用 terser ,uglify、等也是报错,卸载了再安装即可。
  6. 安装完后即可使用了。

以下是我的gulpfile.js文件

var gulp = require('gulp')
var cleanCSS = require('gulp-clean-css')
var htmlmin = require('gulp-htmlmin')
var htmlclean = require('gulp-htmlclean')
var imagemin = require('gulp-imagemin')
// tester (如果使用tester,把下面4行前面的//去掉)
var uglifyjs = require('terser')
var composer = require('gulp-uglify/composer')
var pump = require('pump')
var minify = composer(uglifyjs, console)

// babel (如果不是使用bebel,把下面两行註释掉)
// var uglify = require('gulp-uglify')
// var babel = require('gulp-babel')

// minify js - babel( 如果不是使用bebel,把下面註释掉)
// gulp.task('compress', () =>
// gulp.src(['./public/**/*.js', '!./public/**/*.min.js'])
// .pipe(babel({
// presets: ['@babel/preset-env']
// }))
// .pipe(uglify().on('error', function(e) {
// console.log(e)
// }))
// .pipe(gulp.dest('./public'))
// )

//minify js - tester (如果使用tester,把下面前面的//去掉)
gulp.task('compress', function(cb) {
var options = {}
pump([
gulp.src(['./public/**/*.js', '!./public/**/*.min.js']),
minify(options),
gulp.dest('./public')
],
cb
)
})

// css
gulp.task('minify-css', () => {
return gulp.src('./public/**/*.css')
.pipe(cleanCSS())
.pipe(gulp.dest('./public'))
})

// 压缩 public 目录内 html
gulp.task('minify-html', () => {
return gulp.src('./public/**/*.html')
.pipe(htmlclean())
.pipe(htmlmin({
removeComments: true, // 清除 HTML 註释
collapseWhitespace: true, // 压缩 HTML
collapseBooleanAttributes: true, // 省略布尔属性的值 <input checked="true"/> ==> <input />
removeEmptyAttributes: true, // 删除所有空格作属性值 <input id="" /> ==> <input />
removeScriptTypeAttributes: true, // 删除 <script> 的 type="text/javascript"
removeStyleLinkTypeAttributes: true, // 删除 <style> 和 <link> 的 type="text/css"
minifyJS: true, // 压缩页面 JS
minifyCSS: true, // 压缩页面 CSS
minifyURLs: true
}))
.pipe(gulp.dest('./public'))
})

// 压缩 public/uploads 目录内图片
gulp.task('minify-images', async() => {
gulp.src('./public/img/**/*.*')
.pipe(imagemin({
optimizationLevel: 5, // 类型:Number 预设:3 取值範围:0-7(优化等级)
progressive: true, // 类型:Boolean 预设:false 无失真压缩jpg图片
interlaced: false, // 类型:Boolean 预设:false 隔行扫描gif进行渲染
multipass: false // 类型:Boolean 预设:false 多次优化svg直到完全优化
}))
.pipe(gulp.dest('./public/img'))
})


// allimgs
gulp.task('minify-images2', async() => {
gulp.src('./public/allimgs/**/*.*')
.pipe(imagemin({
optimizationLevel: 5, // 类型:Number 预设:3 取值範围:0-7(优化等级)
progressive: true, // 类型:Boolean 预设:false 无失真压缩jpg图片
interlaced: false, // 类型:Boolean 预设:false 隔行扫描gif进行渲染
multipass: false // 类型:Boolean 预设:false 多次优化svg直到完全优化
}))
.pipe(gulp.dest('./public/allimgs'))
})

// 文章插入图片
gulp.task('minify-images3', async() => {
gulp.src('./public/2*/**/*@(.jpg|.png|.svg|.PNG|.SVG|.JPG)')
.pipe(imagemin({
optimizationLevel: 5, // 类型:Number 预设:3 取值範围:0-7(优化等级)
progressive: true, // 类型:Boolean 预设:false 无失真压缩jpg图片
interlaced: false, // 类型:Boolean 预设:false 隔行扫描gif进行渲染
multipass: false // 类型:Boolean 预设:false 多次优化svg直到完全优化
}))
.pipe(gulp.dest('./public'))
})



// 执行 gulp 命令时执行的任务
gulp.task('default', gulp.parallel(
'compress', 'minify-css', 'minify-html', 'minify-images', 'minify-images2', 'minify-images3'
))

参照我的路劲配置

路径

gulp.src使用参照

其中allimgs是我的网站上一个 相册的功能部分所用的所有图片,这部分图片有点多,而且很大,所以这部分优化是最有必要的。