gulp自動化壓縮合并、加版本號解決方案

雖然網(wǎng)上有很多的 gulp 構(gòu)建文章,但是很多都已經(jīng)隨著 gulp 插件的更新無法運(yùn)行了。因此,我寫了這個比較簡單的構(gòu)建方案。

如果還不熟悉 gulp 的插件,可以閱讀上一篇文章:精通gulp常用插件

這個方案主要是為了實現(xiàn)js/css的壓縮合并、自動添加版本號和壓縮html。

  • gulp-csso 壓縮優(yōu)化css
  • gulp-uglify 壓縮js
  • gulp-html-minify 壓縮html
  • gulp-rev-all 生成版本號

主要通過上面插件實現(xiàn)功能,其他插件配合使用。

// gulpfile.js
var gulp = require('gulp'),
    htmlmini = require('gulp-html-minify'),
    useref = require('gulp-useref'),
    uglify = require('gulp-uglify'),
    csso = require('gulp-csso'),
    filter = require('gulp-filter'),
    RevAll = require('gulp-rev-all'),
    del = require('del');

gulp.task('default',['del'], function () {
    var jsFilter = filter('**/*.js',{restore:true}),
        cssFilter = filter('**/*.css',{restore:true}),
        htmlFilter = filter(['**/*.html'],{restore:true});
    gulp.src('/*.html')
        .pipe(useref())                         // 解析html中的構(gòu)建塊
        .pipe(jsFilter)                         // 過濾所有js
        .pipe(uglify())                         // 壓縮js
        .pipe(jsFilter.restore)
        .pipe(cssFilter)                        // 過濾所有css
        .pipe(csso())                           // 壓縮優(yōu)化css
        .pipe(cssFilter.restore)
        .pipe(RevAll.revision({                 // 生成版本號
            dontRenameFile: ['.html'],          // 不給 html 文件添加版本號
            dontUpdateReference: ['.html']      // 不給文件里鏈接的html加版本號
        }))
        .pipe(htmlFilter)                       // 過濾所有html
        .pipe(htmlmini())                       // 壓縮html
        .pipe(htmlFilter.restore)
        .pipe(gulp.dest('/dist'))
})

gulp.task('del',function () {
    del('/dist');                               // 構(gòu)建前先刪除dist文件里的舊版本
})

在html中,我們需要先定義好構(gòu)建塊。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>gulp自動化構(gòu)建解決方案</title>
    <!-- build:css static/css/index.css -->     // 定義了構(gòu)建后引用的css路徑
    <link rel="stylesheet" href="static/css/common.css"/>
    <link rel="stylesheet" href="static/css/index.css"/>
    <!-- endbuild -->
</head>
<body>
    ......
    
    <!-- build:js static/js/index.js -->        // 定義了構(gòu)建后引用的js路徑
    <script src="static/js/jquery.js"></script>
    <script src="static/js/common.js"></script>
    <script src="static/js/index.js"></script>
    <!-- endbuild -->
</body>
</html>

執(zhí)行構(gòu)建完成后,會生成 dist 文件夾,目錄為:

|-dist
|   |-static
|       |-css
|           |-index.96cf44da.css
|       |-js
|           |-index.42ce3282.js
|   |-index.html

構(gòu)建完的index.html,我們忽略壓縮的html,完成了壓縮合并添加版本號等功能。

// dist/index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>gulp自動化構(gòu)建解決方案</title>
    <link rel="stylesheet" href="static/css/index.96cf44da.css"/>
</head>
<body>
    ......

    <script src="static/js/index.42ce3282.js"></script>
</body>
</html>

更多文章可以訪問我的博客:lin-xin/blog

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在現(xiàn)在的前端開發(fā)中,前后端分離、模塊化開發(fā)、版本控制、文件合并與壓縮、mock數(shù)據(jù)等等一些原本后端的思想開始...
    Charlot閱讀 5,659評論 1 32
  • 什么是GULP? GULP 是前端開發(fā)過程中對代碼進(jìn)行構(gòu)建的工具,是自動化項目的構(gòu)建利器;她不僅能 對...
    碧玉含香閱讀 708評論 0 0
  • gulpjs是一個前端構(gòu)建工具,與gruntjs相比,gulpjs無需寫一大堆繁雜的配置參數(shù),API也非常簡單,學(xué)...
    依依玖玥閱讀 3,304評論 7 55
  • 對網(wǎng)站資源進(jìn)行優(yōu)化,并使用不同瀏覽器測試并不是網(wǎng)站設(shè)計過程中最有意思的部分,但是這個過程中的很多重復(fù)的任務(wù)能夠使用...
    懵逼js閱讀 1,162評論 0 8
  • 編輯于2015年 轉(zhuǎn)載自某作者的譯文 作者要是看到請聯(lián)系我注明出處 對網(wǎng)站資源進(jìn)行優(yōu)化,并使用不同瀏覽器測試并不是...
    krock01閱讀 493評論 0 2

友情鏈接更多精彩內(nèi)容