经过各种研(bai)究(du),找到了一种方案:采用gulp + gulp-imagemin,对图片进行压缩,结合hexo进行对应图片压缩。
安装
npm install gulp --save-dev
npm install gulp-imagemin --save-dev
npm install imagemin-pngquant --save-dev
# 当然也可以--save 记得要给gulp全局安装下,npm命令不行,就是用cnpm
npm install gulp -g # 只有gulp要全局安装下
gulpfile
在package.json同名目录下,增加gulpfile.js对应的入口js文件
import gulp from 'gulp';
import imagemin from 'gulp-imagemin';
import pngquant from 'imagemin-pngquant';
// 定义一个任务 第一个参数为名称,后面时要执行的动作
gulp.task('minify-images', function (done) {
gulp.src('public/p/**/*.{JPG,jpg,PNG,png,GIF,gif,SVG,svg,JPEG,jpeg}')
.pipe(imagemin({
optimizationLevel: 3,
progressive: true,
usa:[pngquant()]
}))
.pipe(gulp.dest('public/p/'))
done();
});
// 定义default ,后面将多个任务序列化并行执行,我们只有一个
gulp.task('default', gulp.series(gulp.parallel('minify-images')), function () {
console.info("----------gulp Finished----------");
});
执行命令gulp 默认情况下,代表gulp default就执行你上面的default任务
当然你也可以制定任务名称:gulp minify-images 执行指定task
然后再hexo状态下:
hexo clean
hexo g
gulp
# 输出如下:
[22:46:42] Using gulpfile ~/Desktop/blogfile/gulpfile.js
[22:46:42] Starting 'default'...
[22:46:42] Starting 'minify-images'...
[22:46:42] Finished 'minify-images' after 74 ms
[22:46:42] Finished 'default' after 99 ms
那说明成功了
遇到的坑
- 引入语法问题,插件需要使用es6语法,故此你的package.json 需要增加一个参数
"type": "module"如此你可以再gulpfile.js中使用es6的import语法