之前的文章讲了如何使用font-spider
压缩字体文件,然而在hexo中使用font-spider会稍微复杂一些,在hexo博客系统中使用font-spider的正确流程为
- hexo clean
- hexo generate
- font-spider public/*.html
- hexo deploy
其中第3步并不是简单的一条命令,还需要进行额外的处理,因为在html文件中,css的链接形式一般为
<link rel="stylesheet" href="/css/style.css" media="screen" type="text/css">
font-spider会把/css/style.css
识别为本地绝对路径
,导致执行失败,我已经在github上向作者提问,暂时没有回复,目前能想到的解决办法就是,写一个脚本,将主题中的/css/style.css
更改为正确的本地绝对路径,例如/Users/zongren/blog/public/css/style.css
,注意是hexo generate
之后的绝对路径,一般为public
目录,然后再执行font-spider
命令就可以了,其中还涉及到字体文件的拷贝和备份,详情见以下代码
#!/bin/sh
cd /Users/zongren/blog
#replace css files path
sed -i -e 's/"\/css\/katex.css"/"\/Users\/zongren\/blog\/public\/css\/katex.css"/g' _config.yml
sed -i -e 's/"\/css\//"\/Users\/zongren\/blog\/public\/css\//g' themes/nojs/layout/_partial/head.ejs
cat _config.yml
cat themes/nojs/layout/_partial/head.ejs
hexo clean
hexo generate
rm -rf public/fonts/*
cp -R themes/nojs/source/_fonts/. public/fonts/
font-spider public/*.html --debug
rm -rf themes/nojs/source/fonts/*
cp -R public/fonts/. themes/nojs/source/fonts/
rm -rf themes/nojs/source/fonts/.font-spider
#recover css files path
mv _config.yml-e _config.yml
mv themes/nojs/layout/_partial/head.ejs-e themes/nojs/layout/_partial/head.ejs
cat _config.yml
cat themes/nojs/layout/_partial/head.ejs
git add .
git commit -m 'Update'
git pull
git push
添加可执行权限后,还可以将它作为pre-commit
钩子,详见使用git钩子,不过需要删除最后几行代码。