Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Alderaan
aodelancheng-github-io
提交
14e39b99
A
aodelancheng-github-io
项目概览
Alderaan
/
aodelancheng-github-io
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
aodelancheng-github-io
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
14e39b99
编写于
5月 07, 2020
作者:
A
Alderaan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加gulp压缩博客文章
上级
bb8534b8
变更
2
展开全部
隐藏空白更改
内联
并排
Showing
2 changed file
with
676 addition
and
513 deletion
+676
-513
package-lock.json
package-lock.json
+513
-513
source/_posts/hexo-compress.md
source/_posts/hexo-compress.md
+163
-0
未找到文件。
package-lock.json
浏览文件 @
14e39b99
此差异已折叠。
点击以展开。
source/_posts/hexo-compress.md
0 → 100644
浏览文件 @
14e39b99
---
title
:
使用Gulp压缩Hexo博客静态资源
date
:
2020-05-07 21:06:42
tags
:
[
Hexo
,
Gulp
]
categories
:
Hexo
copyright
:
true
---
## 概述
由于博客使用的插件较多,文章内包含的图片越多越大,会影响到博客的加载速度,影响访问效果。其中图片对文章加载速度影响较大,如果可以的话,可以使用国内的一些图床,但如果图床挂了,也会导致图片无法访问,迁移麻烦等,所以本博客还是挂在Github上进行访问。为此开始从资源文件大小上进行优化,了解到可以使用
**Gulp**
对博客的js、css、img、html等静态资源文件进行压缩。
<!-- more -->
## Gulp全局安装
```
bash
$
npm
install
gulp
-g
```
本博客安装的
**Gulp**
版本为4.0.2。
## Gulp插件安装
在
`blog`
文件夹(站点根目录)下,安装必备的插件:
```
bash
$
npm
install
gulp gulp-minify-css gulp-uglify gulp-htmlmin gulp-htmlclean gulp-imagemin
--save
```
安装完成后,可以在
`package.json`
下查看到具体的插件版本信息,本博客的插件版本对应信息如下:
```
json
"dependencies"
:
{
"gulp"
:
"^4.0.2"
,
"gulp-htmlclean"
:
"^2.7.22"
,
"gulp-htmlmin"
:
"^5.0.1"
,
"gulp-imagemin"
:
"^7.1.0"
,
"gulp-minify-css"
:
"^1.2.4"
,
"gulp-uglify"
:
"^3.0.2"
}
```
## 创建gulpfile.js文件
在
`blog`
文件夹(站点根目录)下,新建
`gulpfile.js`
文件,并编写如下内容:
```
javascript
// 引入需要的模块
var
gulp
=
require
(
'
gulp
'
);
var
minifycss
=
require
(
'
gulp-minify-css
'
);
var
uglify
=
require
(
'
gulp-uglify
'
);
var
htmlmin
=
require
(
'
gulp-htmlmin
'
);
var
htmlclean
=
require
(
'
gulp-htmlclean
'
);
var
imagemin
=
require
(
'
gulp-imagemin
'
);
// 压缩public目录下所有html文件, minify-html是任务名, 设置为default,启动gulp压缩的时候可以省去任务名
gulp
.
task
(
'
minify-html
'
,
function
()
{
return
gulp
.
src
(
'
./public/**/*.html
'
)
// 压缩文件所在的目录
.
pipe
(
htmlclean
())
.
pipe
(
htmlmin
({
removeComments
:
true
,
minifyJS
:
true
,
minifyCSS
:
true
,
minifyURLs
:
true
,
}))
.
pipe
(
gulp
.
dest
(
'
./public
'
))
// 输出的目录
});
// 压缩css
gulp
.
task
(
'
minify-css
'
,
function
()
{
return
gulp
.
src
([
'
./public/**/*.css
'
,
'
!./public/js/**/*min.css
'
])
.
pipe
(
minifycss
({
compatibility
:
'
ie8
'
}))
.
pipe
(
gulp
.
dest
(
'
./public
'
));
});
// 压缩js
gulp
.
task
(
'
minify-js
'
,
function
()
{
return
gulp
.
src
([
'
./public/**/.js
'
,
'
!./public/js/**/*min.js
'
])
.
pipe
(
uglify
())
.
pipe
(
gulp
.
dest
(
'
./public
'
));
});
// 压缩图片
gulp
.
task
(
'
minify-images
'
,
function
()
{
return
gulp
.
src
([
'
./public/**/*.png
'
,
'
./public/**/*.jpg
'
,
'
./public/**/*.gif
'
])
.
pipe
(
imagemin
(
[
imagemin
.
gifsicle
({
'
optimizationLevel
'
:
3
}),
imagemin
.
mozjpeg
({
'
progressive
'
:
true
}),
imagemin
.
optipng
({
'
optimizationLevel
'
:
5
}),
imagemin
.
svgo
()],
{
'
verbose
'
:
true
}))
.
pipe
(
gulp
.
dest
(
'
./public
'
))
});
// gulp 4.0 适用的方式
gulp
.
task
(
'
default
'
,
gulp
.
parallel
(
'
minify-html
'
,
'
minify-css
'
,
'
minify-js
'
,
'
minify-images
'
));
```
这里要注意,压缩过程中排除
`*min.css`
和
`*min.js`
这两类文件,因为这些文件其他人已经经过处理,不需要再进行压缩,否则可能无法正常使用。其他人网上的脚本使用的是
`imagemin.jpegtran`
,由于
`gulp-imagemin`
在7.0.0开始,已经被替换为
`mozjpeg`
,具体可以在
[
release
](
https://github.com/sindresorhus/gulp-imagemin/releases
)
版本说明中查看。
## 压缩指令
```
bash
$
hexo clean // 可以先清除缓存文件和已生成的静态文件(特别是更换主题后需要执行此操作)
$
hexo generate // 生成博客
$
gulp default // 执行压缩,可简写为 gulp
$
hexo deploy // 压缩完成无错误后,就可以发布了
```
在执行压缩过程中,可能会遇到压缩jpg、压缩png、压缩gif时的错误,或者提示类似于
`imagemin-*`
组件无法找到的错误。此时应该注意,
`gulp-imagemin`
也有对应的相关依赖,如本博客中版本为
`7.1.0`
,有以下特定版本的
[
依赖
](
https://github.com/sindresorhus/gulp-imagemin/commit/67cceb3cfcef05a9523f0a89c71d56e42e2c3981
)
:
```
json
"optionalDependencies"
:
{
"imagemin-gifsicle"
:
"^7.0.0"
,
"imagemin-mozjpeg"
:
"^8.0.0"
,
"imagemin-optipng"
:
"^7.0.0"
,
"imagemin-svgo"
:
"^7.0.0"
}
```
若对应依赖组件的版本有问题,可能会导致压缩对应格式的图片出错,为此建议当出现某个组件压缩失败时,手动安装对应特定的版本,
`npm`
安装软件包特定版本的命令格式如下:
```
bash
$
npm
install
imagemin-mozjpeg@8.0.0 // 在软件包后面加上@版本号
```
## 效果
一次压缩过程输出内容如下:
```
bash
$
gulp
[
21:55:01] Using gulpfile ~/Documents/blog/gulpfile.js
[
21:55:01] Starting
'default'
...
[
21:55:01] Starting
'minify-html'
...
[
21:55:01] Starting
'minify-css'
...
[
21:55:01] Starting
'minify-js'
...
[
21:55:01] Starting
'minify-images'
...
[
21:55:02] Finished
'minify-js'
after 1.01 s
[
21:55:03] Finished
'minify-css'
after 1.75 s
[
21:55:03] gulp-imagemin: ✔ images/apple-touch-icon-next.png
(
saved 190 B - 12.3%
)
[
21:55:03] gulp-imagemin: ✔ images/favicon-16x16-next.png
(
saved 150 B - 34.5%
)
[
21:55:03] gulp-imagemin: ✔ images/avatar.jpg
(
saved 3.69 kB - 18.6%
)
[
21:55:03] gulp-imagemin: ✔ images/favicon-32x32-next.png
(
saved 152 B - 23.8%
)
[
21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-114433.jpg
(
saved 51.1 kB - 54.5%
)
[
21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-202546.jpg
(
saved 21.3 kB - 47.3%
)
[
21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-200236.jpg
(
saved 40.2 kB - 51%
)
[
21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-193801.jpg
(
saved 51 kB - 53%
)
[
21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-111152.jpg
(
saved 80.1 kB - 56.7%
)
[
21:55:04] gulp-imagemin: ✔ images/avatar.gif
(
saved 8 B - 0.4%
)
[
21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-203256.jpg
(
saved 17.2 kB - 43.5%
)
[
21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-205440.jpg
(
saved 18.5 kB - 47.4%
)
[
21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-200812.jpg
(
saved 49.4 kB - 52.7%
)
[
21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-202952.jpg
(
saved 49.6 kB - 52.5%
)
[
21:55:04] gulp-imagemin: Minified 14 images
(
saved 383 kB - 51.3%
)
[
21:55:04] Finished
'minify-html'
after 3.13 s
[
21:55:04] Finished
'minify-images'
after 3.13 s
[
21:55:04] Finished
'default'
after 3.14 s
```
`index.html`
在压缩前的大小为
`37,326`
字节,压缩后为
`33,537`
字节;utils.js在压缩前的大小为15,982字节,压缩后仍为
`15,982`
字节;main.css在压缩前大小为49,538字节,压缩后为
`38,183`
字节。
由本次压缩可看出,Gulp对图片的压缩效果比较明显,在html、css、js上也有一定的效果,总体上讲还是有比较好的优化。
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录