使用gulp添加版本號

廢話:好多后期要給工程增加版本號,清理瀏覽器緩存贺纲,所以使用這個鬼來搞一把

當(dāng)然這里需要你用nodeJS的npm工具安裝一些東西

不會nodejs,你先百度一把赶盔!

準(zhǔn)備工作:你需要用npm包安裝這些插件店枣。

npminstall--save-dev gulpnpminstall--save-dev gulp-revnpminstall--save-dev gulp-rev-collectornpminstall--save-dev gulp-asset-revnpminstall--save-dev run-sequence

當(dāng)然我第一次安裝失敗了,啟動不了gulp;

于是瓶蚂,我用了全局安裝gulp 命令為:

npm-g install gulp

我用的win7,所以在CMD中運行一把就發(fā)現(xiàn)安裝成功了

好了宣吱,開始為我們工程增加版本號

第一步:打開node_modules\gulp-rev\index.js

找到下面的代碼窃这,將注釋掉的改為下面的內(nèi)容,此處為改變返回的版本號格式

/*manifest[originalFile] = revisionedFile;*/manifest[originalFile] = originalFile +'?v='+file.revHash;

第二步:打開node_modules\rev-path\index.js

找到下面的代碼征候,將注釋掉的改為下面的內(nèi)容杭攻,此處為改變關(guān)聯(lián)的下劃線(老姿找了半天找不到這個rev-path,是因為以前的gulp-rev插件將這部分集成在了里面疤坝,而后續(xù)的版本將rev-path從gulp-rev里抽離出來了兆解,所以要在項目目錄的node_modules里找這個插件,我們不需要手動安裝跑揉,這是gulp-rev的依賴锅睛,npm會自動安裝!)

/*returnfilename+'-'+ hash + ext;*/returnfilename+ ext;

第三步:打開node_modules\gulp-rev-collector\index.js

找到下面的代碼,將注釋掉的改為下面的內(nèi)容现拒,此文件最好改三個地方

一處:

/*if( !_.isString(json[key]) || path.basename(json[key]).replace(new RegExp( opts.revSuffix ),'') !==? path.basename(key) ) {? ? ? ? ? isRev =0;? }*/if( !_.isString(json[key]) || path.basename(json[key]).split('?')[0] !== path.basename(key) ) {? ? ? ? ? isRev =0;? }

二處:

//return pattern.replace(/[\-\[\]\{\}\(\)\*\+\?\.\^\$\|\/\\]/g,"\\$&");//禁止重復(fù)添加版本號varrp = pattern.replace(/[\-\[\]\{\}\(\)\*\+\?\.\^\$\|\/\\]/g,"\\$&");? ? rp = pattern +"(\\?v=(\\d|[a-z]){8,10})*";returnrp;

三處:

/*patterns.push( escPathPattern( (path.dirname(key) ==='.'?'': closeDirBySep(path.dirname(key)) ) + path.basename(key, path.extname(key)) )? ? ? ? ? ? ? ? ? ? ? ? ? ? + opts.revSuffix? ? ? ? ? ? ? ? ? ? ? ? ? ? + escPathPattern( path.extname(key) )? ? ? ? ? ? ? ? ? ? ? ? );*/patterns.push( escPathPattern( (path.dirname(key) ==='.'?'': closeDirBySep(path.dirname(key)) ) + path.basename(key, path.extname(key)) )? ? ? ? ? ? ? ? ? ? ? ? ? ? + opts.revSuffix? ? ? ? ? ? ? ? ? ? ? ? ? ? + escPathPattern( path.extname(key) ) +"(\\?v=(\\d|[a-z]){8,10})*");

以上都做過多了乖订,就可以創(chuàng)建一個文件,當(dāng)然這個目錄最好創(chuàng)建在工程名下第一級目錄

例如我的目錄為:

第四步:創(chuàng)建一個gulpfile.js文件所在目錄如下具练。

內(nèi)容為:

//引入gulp和gulp插件vargulp =require('gulp'),? assetRev =require('gulp-asset-rev'),? runSequence =require('run-sequence'),? rev =require('gulp-rev'),? revCollector =require('gulp-rev-collector');//定義css乍构、js源文件路徑并且可以傳入多個不同的文件夾varcssSrc ='css/*.css',? jsSrc ='js/lib/config.js',? jsSrcc ='js/loacal/*/*.js',? ico ='img/icon/*.ico';//為css中引入的圖片/字體等添加hash編碼gulp.task('assetRev',function(){returngulp.src(cssSrc)//該任務(wù)針對的文件.pipe(assetRev())//該任務(wù)調(diào)用的模塊.pipe(gulp.dest('css'));//編譯后的路徑});//CSS生成文件hash編碼并生成 rev-manifest.json文件名對照映射gulp.task('revCss',function(){returngulp.src(cssSrc)? ? .pipe(rev())? ? .pipe(rev.manifest())? ? .pipe(gulp.dest('rev/css'));});//js生成文件hash編碼并生成 rev-manifest.json文件名對照映射gulp.task('revJs',function(){returngulp.src([jsSrcc,jsSrc])? ? .pipe(rev())? ? .pipe(rev.manifest())? ? .pipe(gulp.dest('rev/js'));});//js生成文件hash編碼并生成 rev-manifest.json文件名對照映射gulp.task('revIco',function(){returngulp.src(ico)? ? .pipe(rev())? ? .pipe(rev.manifest())? ? .pipe(gulp.dest('rev/ico'));});//Html替換css、js文件版本gulp.task('revHtml',function(){returngulp.src(['rev/**/*.json','html/*/*.html'])? ? .pipe(revCollector())? ? .pipe(gulp.dest('html'));});//開發(fā)構(gòu)建gulp.task('default',function(done){? condition =false;? runSequence(//說明扛点,用gulp.run也可以實現(xiàn)以上所有任務(wù)哥遮,只是gulp.run是最大限度的并行執(zhí)行這些任務(wù),而在添加版本號時需要串行執(zhí)行(順序執(zhí)行)這些任務(wù)陵究,故使用了runSequence.['assetRev'],? ? ['revCss'],? ? ['revJs'],? ? ['revIco'],? ? ['revHtml'],? ? done);});

ok,最后一下就直接運行就可以了

D:\DFF\PROJECT\KJW_HTML>gulp[19:41:14] Using gulpfile D:\DFF\PROJECT\KJW_HTML\gulpfile.js[19:41:14] Starting'default'...[19:41:14] Starting'assetRev'...[19:41:14] Finished'assetRev'after123ms[19:41:14] Starting'revCss'...[19:41:14] Finished'revCss'after25ms[19:41:14] Starting'revJs'...[19:41:14] Finished'revJs'after75ms[19:41:14] Starting'revIco'...[19:41:14] Finished'revIco'after3.06ms[19:41:14] Starting'revHtml'...[19:41:16] Finished'revHtml'after1.34s[19:41:16] Finished'default'after1.58sD:\DFF\PROJECT\KJW_HTML>

你運行完后就可以看到所有靜態(tài)文件后面都有版本號了眠饮,因為有些不用改的資源目錄不用變,如jq和其他功能插件

加完之后:

摘要: ?更多前端學(xué)習(xí)請加群:JS/NDEJS/HTML5/(前端)458633781?或關(guān)注心魅體公眾號:ilittlekiss

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铜邮,一起剝皮案震驚了整個濱河市仪召,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌松蒜,老刑警劉巖扔茅,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異秸苗,居然都是意外死亡召娜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門惊楼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玖瘸,“玉大人,你說我怎么就攤上這事檀咙⊙诺梗” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵弧可,是天一觀的道長蔑匣。 經(jīng)常有香客問我,道長侣诺,這世上最難降的妖魔是什么殖演? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮年鸳,結(jié)果婚禮上趴久,老公的妹妹穿的比我還像新娘。我一直安慰自己搔确,他們只是感情好彼棍,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布灭忠。 她就那樣靜靜地躺著,像睡著了一般座硕。 火紅的嫁衣襯著肌膚如雪弛作。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天华匾,我揣著相機與錄音映琳,去河邊找鬼。 笑死蜘拉,一個胖子當(dāng)著我的面吹牛萨西,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播旭旭,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谎脯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了持寄?” 一聲冷哼從身側(cè)響起源梭,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎稍味,沒想到半個月后废麻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡仲闽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年脑溢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赖欣。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖验庙,靈堂內(nèi)的尸體忽然破棺而出顶吮,到底是詐尸還是另有隱情,我是刑警寧澤粪薛,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布悴了,位于F島的核電站,受9級特大地震影響违寿,放射性物質(zhì)發(fā)生泄漏湃交。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一藤巢、第九天 我趴在偏房一處隱蔽的房頂上張望搞莺。 院中可真熱鬧,春花似錦掂咒、人聲如沸才沧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽温圆。三九已至挨摸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間岁歉,已是汗流浹背得运。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锅移,地道東北人澈圈。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像帆啃,于是被迫代替她去往敵國和親瞬女。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容