• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    Grunt針對靜態文件的壓縮,版本控制打包的實例講解

    來源:懂視網 責編:小采 時間:2020-11-27 22:28:43
    文檔

    Grunt針對靜態文件的壓縮,版本控制打包的實例講解

    Grunt針對靜態文件的壓縮,版本控制打包的實例講解:在講之前先談談大致步驟:安裝nodejs -> 全局安裝grunt -> 項目創建package.json --> 項目安裝grunt以及grunt插件 -> 配置Gruntfile.js -> 運行任務 1.安裝Node 我們開始之前需要安裝Nodejs,如果沒有安裝的 傳送門 安裝好了之后
    推薦度:
    導讀Grunt針對靜態文件的壓縮,版本控制打包的實例講解:在講之前先談談大致步驟:安裝nodejs -> 全局安裝grunt -> 項目創建package.json --> 項目安裝grunt以及grunt插件 -> 配置Gruntfile.js -> 運行任務 1.安裝Node 我們開始之前需要安裝Nodejs,如果沒有安裝的 傳送門 安裝好了之后

    在講之前先談談大致步驟:安裝nodejs -> 全局安裝grunt -> 項目創建package.json --> 項目安裝grunt以及grunt插件 -> 配置Gruntfile.js -> 運行任務

    1.安裝Node

    我們開始之前需要安裝Nodejs,如果沒有安裝的 傳送門

    安裝好了之后,查看是否安裝成功,正常是這樣的提示

    這里建議npm換成淘寶的cnpm,速度杠杠的。

    安裝命令:

    npm install cnpm -g -registry=https://registry.npm.taobao.org

    2.安裝全局Grunt

    安裝命令:

    cnpm install grunt -g

    3.項目創建package.json

    在項目根目錄下創建package.json文件,文件內容如下

    4.項目安裝grunt以及grunt插件

    我們所需要的插件

    插件名稱 說明 Github地址
    grunt-contrib-clean 清空文件和文件夾 https://github.com/gruntjs/grunt-contrib-clean
    grunt-contrib-copy 復制文件和文件夾 https://github.com/gruntjs/grunt-contrib-copy
    grunt-contrib-concat 連接、合并文件(沒用到) https://github.com/gruntjs/grunt-contrib-concat
    grunt-contrib-cssmin (CSS文件)壓縮 https://github.com/gruntjs/grunt-contrib-cssmin
    grunt-contrib-uglify (JS文件)壓縮 https://github.com/gruntjs/grunt-contrib-uglify
    grunt-filerev 文件內容hash(MD5)(版本號控制) https://github.com/yeoman/grunt-filerev
    grunt-usemin 文件進行引用修改 https://github.com/yeoman/grunt-usemin
    load-grunt-tasks oad-grunt-tasks https://github.com/sindresorhus/load-grunt-tasks

    我們打開我們的項目文件夾,在路徑欄中輸入cmd然后回車

    回車后的界面

    打開命令行窗口之后,我們輸入安裝命令:

    cnpm install grunt grunt-contrib-clean grunt-contrib-copy grunt-contrib-concat grunt-contrib-cssmin grunt-contrib-uglify grunt-filerev grunt-usemin load-grunt-tasks --save-dev

    5.配置Gruntfile.js (這是重點,重點,重點。重要的事情說三遍。)

    先貼一下我的配置,后面慢慢說明

    module.exports = function (grunt) {
     require('load-grunt-tasks')(grunt);
    
     var path = {
     src : 'test',
     dest : 'dist',
     }
    
     grunt.initConfig({
     path : path,
     clean : {//清空生產文件夾
     beforebuild : {
     files : [{
     src : ['<%= path.dest %>/']
     }
     ]
     }
     },
     filerev : {//對css和js文件重命名
     build : {
     files : [{
     src : ['<%= path.dest %>/**', 
     '!<%= path.dest %>/page/*.html',//html文件不加版本號
     '!<%= path.dest %>/**/*.{png,jpg,jpeg}']//圖片 不需要加版本號
     }
     ]
     }
     },
     useminPrepare : {//聲明concat、cssmin、uglify
     build : {
     files : [{ 
     src : '<%= path.src %>/page/*.html'
     }
     ],
     
     }
     },
     usemin : {//修改html中的css和js引用
     html : {
     files : [{
     src : '<%= path.dest %>/page/*.html'
     }
     ]
     }
     },
     copy : {//復制文件
     build : {
     files : [{
     expand : true,//為true啟用cwd,src,dest選項
     cwd : '<%= path.src %>/',//所有src指定的匹配都將相對于此處指定的路徑(但不包括此路徑)
     src : ['**/*.*'],//相對于cwd路徑的匹配模式。意思就是 src/**/*.*,匹配src下面所有文件
     dest : '<%= path.dest %>/'//目標文件路徑前綴。
     }
     ]
     }
     },
     cssmin :{
     build : {
     files : [{
     expand : true,//為true啟用cwd,src,dest選項
     cwd : '<%= path.src %>/',//所有src指定的匹配都將相對于此處指定的路徑(但不包括此路徑)
     src : ['css/*.css'],//相對于cwd路徑的匹配模式。意思就是 src/**/*.css,匹配src下面所有css文件
     dest : '<%= path.dest %>/'//目標文件路徑前綴。
     }
     ]
     }
     },
     uglify :{
     build : {
     files : [{
     expand : true,//為true啟用cwd,src,dest選項
     cwd : '<%= path.src %>/',//所有src指定的匹配都將相對于此處指定的路徑(但不包括此路徑)
     src : ['js/*.js'],//相對于cwd路徑的匹配模式。意思就是 src/**/*.js,匹配src下面所有js文件
     dest : '<%= path.dest %>/'//目標文件路徑前綴。
     }
     ]
     }
     },
     });
     grunt.registerTask('default', ['clean:beforebuild', 'copy', 'cssmin', 'uglify','filerev', 'usemin']);
    };

    我們前面一直都在安裝這個安裝那個,但是安裝的這些東西怎么用起來了?

    首先我們通過學習 grunt入門 了解到插件如何使用,這是官網的例子。

    pkg是通過讀取package.json生成的json對象。

    uglify是 grunt-contrib-uglify 指定的任務名,每個插件都有對應的任務名,可以在對應的github里面查看

    grunt.loadNpmTasks('grunt-contrib-uglify'); 從字面上就可以看出來/,加載能夠提供"uglify"任務的插件。

    grunt.registerTask('default', ['uglify']); 注冊別名任務,這個別名任務對應的是一個任務列表

    當通過 grunt 別名時,實際是執行列表里的任務,并按順序執行

    這些基本的信息都可以通過官網查看。

    我們來說說我們需求,我們需要對靜態文件打包壓縮,并且需要對靜態文件加入版本號而且所有引用靜態文件的html或css都得修改文件名,我們的需求明確后來來看看我們怎么做。

    第一步:我們需要重新打包,那就需要復制文件,所以我們需要grunt-contrib-copy插件。

    在copy之前我們先要確定源文件和目標文件,我這里源文件都放在test文件夾中,目標文件都放在dist文件夾中

    我們創建文件路徑

    var path = {
     src : 'test',
     dest : 'dist',
     }

    文件路徑創建好了,我們來看copy

    copy : {//復制文件
     build : {
     files : [{
     expand : true,//為true啟用cwd,src,dest選項
     cwd : '<%= path.src %>/',//所有src指定的匹配都將相對于此處指定的路徑(但不包括此路徑)
     src : ['**/*.*'],//相對于cwd路徑的匹配模式。意思就是 src/**/*.*,匹配src下面所有文件
     dest : '<%= path.dest %>/'//目標文件路徑前綴。
     }
     ]
     }
     },

    從代碼的注釋就可以看出一二了。這里說下cwd,src,dest 。

    其實這里的源路徑是 cwd + src。這才是真正的源路徑。dest是目標路徑前綴。

    我這里的意思是src下面所有的文件,意思就是把 src文件夾 里面的文件復制到 dest文件夾 里。這里可以指定需要復制的具體文件夾或者文件類型

    第二步:進行文件壓縮,我這里只是針對js和css壓縮,對img的壓縮可以查看對應的插件,思路都一樣。

    css壓縮需要用到 grunt-contrib-cssmin 插件,該插件對應的任務名為 cssmin

    cssmin :{
     build : {
     files : [{
     expand : true,//為true啟用cwd,src,dest選項
     cwd : '<%= path.src %>/',//所有src指定的匹配都將相對于此處指定的路徑(但不包括此路徑)
     src : ['css/*.css'],//相對于cwd路徑的匹配模式。意思就是 src/**/*.css,匹配src下面所有文件
     dest : '<%= path.dest %>/'//目標文件路徑前綴。
     }
     ]
     }
     },

    js 壓縮需要用到 grunt-contrib-uglify 插件,該插件對應的任務名為 uglify

    uglify :{
     build : {
     files : [{
     expand : true,//為true啟用cwd,src,dest選項
     cwd : '<%= path.src %>/',//所有src指定的匹配都將相對于此處指定的路徑(但不包括此路徑)
     src : ['js/*.js'],//相對于cwd路徑的匹配模式。意思就是 src/**/*.js,匹配src下面所有文件
     dest : '<%= path.dest %>/'//目標文件路徑前綴。
     }
     ]
     }
     },

    第三步:靜態文件重命名,我們這里的版本控制是通過對靜態文件重命名來現實的。

    重命名需要用到 grunt-filerev 插件,該插件對應的任務名為 filerev

    filerev : {//對css和js文件重命名
     build : {
     files : [{
     src : ['<%= path.dest %>/**', 
     '!<%= path.dest %>/page/*.html',//html文件不加版本號
     '!<%= path.dest %>/**/*.{png,jpg,jpeg}']//圖片 不需要加版本號
     }
     ]
     }
     },

    這里只有一個src參數,傳的是個數組,我們這里是只想給css和js重命名,其他文件不需要。所以數組第一個參數 src/** 匹配src文件夾中所有文件,后面兩個 ! xx,是排除的意思,

    第四步:修改html中css和js的引用

    修改文件引用需要用到 grunt-usemin 插件,該插件對應的任務名為 usemin

    usemin : {//修改html中的css和js引用
     html : {
     files : [{
     src : '<%= path.dest %>/page/*.html'
     }
     ]
     }
     },

    這里也只有一個src參數,給出的是html的地址,如果你還有css 可以這樣寫

    usemin : {//修改html中的css和js引用
     html : {
     files : [{
     src : '<%= path.dest %>/page/*.html'
     }
     ]
     },
     css :{
     files : [{
     src : '<%= path.dest %>/css/*.css'
     }
     ]
     }
     },

    第五步:我們從 復制,壓縮,重命名,修改引用都說了一遍,這里還少一個東西,就是我們每次復制之前需要把目標文件夾里面的文件刪除掉。

    修改文件引用需要用到 grunt-contrib-clean 插件,該插件對應的任務名為 clean

    clean : {//清空生產文件夾
     beforebuild : {
     files : [{
     src : ['<%= path.dest %>/']
     }
     ]
     }
     },

    這里也只有一個src參數,給出目標文件夾的地址。

    所有任務到這里就結算了。

    我們注冊任務別

    grunt.registerTask('default', ['clean:beforebuild', 'copy', 'cssmin', 'uglify','filerev', 'usemin']);

    可以看到,我們這里只是注冊了任務,并沒有應用插件。我們添加插件是聽過 load-grunt-tasks 插件完成的

    require('load-grunt-tasks')(grunt);

    這里指令相當于我們一個個寫

    grunt.loadNpmTasks('xxx');

    Gruntfile.js 配置完了之后我們執行grunt命令就可以在目標文件夾中得到我們所需要的文件

    這里補充說明幾點:

    Gruntfile.js 配置完了之后我們執行grunt命令就可以在目標文件夾中得到我們所需要的文件

    這里補充說明幾點:

    這種寫法是動態構建文件對象

    這種寫法是文件數組格式 

    以上這篇Grunt針對靜態文件的壓縮,版本控制打包的實例講解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    Grunt針對靜態文件的壓縮,版本控制打包的實例講解

    Grunt針對靜態文件的壓縮,版本控制打包的實例講解:在講之前先談談大致步驟:安裝nodejs -> 全局安裝grunt -> 項目創建package.json --> 項目安裝grunt以及grunt插件 -> 配置Gruntfile.js -> 運行任務 1.安裝Node 我們開始之前需要安裝Nodejs,如果沒有安裝的 傳送門 安裝好了之后
    推薦度:
    標簽: 版本 打包壓縮
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 久热这里只有精品12| 免费91麻豆精品国产自产在线观看| 精品性影院一区二区三区内射| 国产色精品vr一区区三区| 国产精品成人在线| 人妻少妇乱子伦精品| 无码AV动漫精品一区二区免费| 国产精品爱搞视频网站| 精品久久久久久久| 国产三级久久久精品麻豆三级| 亚洲国产精品无码久久98| 日韩欧美一区二区三区中文精品| 国产农村妇女毛片精品久久| 9久热这里只有精品| 久久精品这里热有精品| 国产成人精品综合网站| 国产精品视频二区不卡| 热re99久久6国产精品免费| 亚洲精品无码你懂的网站| 久久99热这里只有精品国产| 国产精品久久久久乳精品爆| 久久精品国产福利国产秒| 国产成人A人亚洲精品无码| 久久精品国产亚洲AV无码麻豆| 亚洲精品午夜无码电影网| 香蕉依依精品视频在线播放| 麻豆国内精品久久久久久| 精品久久久久久无码中文野结衣| 国产精品 一区 在线| 91久久精品电影| 97视频在线精品国自产拍| 色综合久久精品中文字幕首页 | 国产精品成人观看视频国产奇米 | 四虎精品成人免费永久| 四虎国产精品免费久久久| 久草视频在线这里精品| 亚洲天堂久久精品| 国产乱码精品一区二区三| 久久国产精品国语对白| 欧美精品高清在线xxxx| 最新精品露脸国产在线|