hexo
所產生出來的網站都是靜態 的html
頁面,預設情形下到public
資料夾隨便打開檔案都會發現許多多餘的空白及換行
因此我們可以把這些東西消除,並且減少檔案體積、增加傳輸速度
你現在看的這個網站就是有經過壓縮的
安裝 gulp
在有package.json
的路徑下執行下面的指令
1 npm i -S gulp gulp-clean-css gulp-uglify gulp-htmlmin gulp-htmlclean gulp-pretty-data gulp-dom
gulp 是一個拿來批量構建一些東西用的工具我們會使用它加上其他的插件來幫
hexo 產生出來的檔案壓縮
設定
gulpfile.js
在package.json
同一層的目錄建立一個檔案名為gulpfile.js
檔案內容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 var gulp = require ('gulp' )var cleancss = require ('gulp-clean-css' )var uglify = require ('gulp-uglify' )var htmlmin = require ('gulp-htmlmin' )var htmlclean = require ('gulp-htmlclean' )var prettyData = require ('gulp-pretty-data' )var dom = require ('gulp-dom' )gulp.task ('css' , function ( ) { return gulp .src ('./public/**/*.css' ) .pipe (cleancss ({ compatibility : 'ie8' })) .pipe (gulp.dest ('./public' )) }) gulp.task ('html' , function ( ) { return gulp .src ('./public/**/*.html' ) .pipe ( dom (function ( ) { var links = Array .from (this .querySelectorAll ('a' )) links.filter (link => link.target === '_blank' ).forEach (link => (link.rel = 'noopener noreferrer' )) return this }) ) .pipe (htmlclean ()) .pipe ( htmlmin ({ removeComments : true , minifyJS : true , minifyCSS : true , minifyURLs : true }) ) .pipe (gulp.dest ('./public' )) }) gulp.task ('js' , function ( ) { return gulp .src ('./public/**/*.js' ) .pipe (uglify ()) .pipe (gulp.dest ('./public' )) }) gulp.task ('xml-json' , function ( ) { return gulp .src ('./public/**/*.(xml|json)' ) .pipe ( prettyData ({ type : 'minify' , preserveComments : true , extensions : { xlf : 'xml' , svg : 'xml' } }) ) .pipe (gulp.dest ('public' )) }) gulp.task ('default' , [ 'css' , 'html' , 'js' , 'xml-json' ])
package.json
接下來打開package.json
新增一個scripts
的區塊,裡面有個字串build
,值填入hexo clean && hexo g && gulp
1 2 3 4 5 6 "private" : true ,"scripts" : { "build" : "hexo clean && hexo g && gulp" }, "dependencies" : {
完成
基本上這樣就完成了未來只要執行npm run build
就會自動產生檔案並壓縮,而執行hexo generate
只會產生檔案而不會壓縮
此外,gulpfile.js
其實還能做很多事來修改頁面上的一些東西,但我懶得寫文章詳細講
有興趣的可以來看看這個網站所用的 gulefile.js