1. 程式人生 > >使用gulp進行自動在js檔案後加版本號,使在更新的時候不必手動清理快取

使用gulp進行自動在js檔案後加版本號,使在更新的時候不必手動清理快取

原理

如果不是第一次訪問這個網頁,瀏覽器會留下js或css的快取,這對開發人員釋出新版本系統的時候會起到不利影響, 總會叫使用者去清理快取.解決方案是在js或css檔案後面加版本號,如:

<script src="src/components/$module.js?v=1.0.0"></script>

當瀏覽器快取中的檔案問號後面的值和釋出新系統的值不一樣的話, 瀏覽器會認為他是該檔案的某個版本,就會重新載入這個檔案,從而解決問題,但是每次手動改那麼多字尾有些費事, 所以查了些資料, 這裡用gulp來管理

一、gulp外掛安裝

首先安裝 gulp-rev-append
npm install –save-dev gulp-rev-append
這裡注意, 要安裝在你所用的node_modules中, 我在這步跳到坑裡了,直接在webstorm中裝, 結果裝在了專案下面, 因為剛接觸gulp 不會操作,導致整個專案起不來了, 又重新從svn上下了一遍(ps: svn是個好東西)
最後想了下,用cmd執行,指到node_modules所在的這個資料夾的目錄下來執行那段程式碼,就裝上了

二、gulp配置

找到gulpfile.js配置檔案
這裡寫圖片描述
這裡是最開始的配置
其中新加的是

rev  = require('gulp-rev-append'), //URL自動加上版本號

對應下面配置

//路徑替換任務
gulp.task('rev',function(){
    gulp.src('./index.html')
        .pipe(rev())
        .pipe(gulp.dest('./dist'));
});
// Clean
gulp.task('clean', function () {
    del(['dist/index.html'
]); }); gulp.task('default',['clean','rev']);

其中,替換的時候, 就是把目錄下面的index.html檔案,替換完放到目錄下的dist
clean是清除dist資料夾中的index.html
最後一句話是把前兩個合併起來, 執行它相當於執行前兩個
接下來看一下目錄結構

這裡寫圖片描述
寫完gulp需要重新整理一下,之後配置下index.html 檔案 ,在js後面加上[email protected]@hash
這裡寫圖片描述

之後執行default,當然這個也可以改名的 當時懶了沒改,笑哭. 最後會在dist資料夾生成一個index.html, 釋出的時候替換一下就可以了,效果如下
這裡寫圖片描述

相關推薦

使用gulp進行自動js檔案版本,使更新的時候不必手動清理快取

原理 如果不是第一次訪問這個網頁,瀏覽器會留下js或css的快取,這對開發人員釋出新版本系統的時候會起到不利影響, 總會叫使用者去清理快取.解決方案是在js或css檔案後面加版本號,如: <script src="src/components/$m

gulp自動化壓縮合並、版本解決方案

nal efi fun 完成 文件添加 pda ndb fault index 雖然網上有很多的 gulp 構建文章,但是很多都已經隨著 gulp 插件的更新無法運行了。因此,我寫了這個比較簡單的構建方案。 如果還不熟悉 gulp 的插件,可以閱讀上一篇文章:精通gu

js 和css 版本問題

<span style="font-size:14px;">css和js帶引數(形如.css?v=與.js?v= 或 .css?version=與.js?version= ) <script type=”text/javascript” src=

使用gulp自動化打包合並前端靜態資源(CSS、JS文件壓縮、添版本

開發 替換 2.4 所有 vsu scom lena pfile sss 現在正在做的項目更新叠代比較頻繁,會經常對前端代碼打包部署,手動整合代碼文件很麻煩並且浪費時間,所以決定使用gulp來代替手工完成這項工作。 前端靜態資源在發版更新時會面臨客戶端瀏覽器緩存的問題(可參

用python給html裏的css及js文件鏈接自動版本

odin link 鏈接 寫入 dir bsp gulp () pan 傳統的給文件鏈接添加版本號的方法是使用gulp-rev,這裏提出的解決方案是使用python來替代gulp-rev。 import os import re import uuid impor

JS與CSS檔案版本

有時候剛釋出的檔案可能會存在快取,最常見的是JS與CSS檔案無法及時更新 所以需要給這些檔案加一個版本號解決 <link rel="stylesheet" type="text/css" href="~/Content/static/system/css/[email p

webview攔截css,js,圖片載本地外部儲存的檔案(shouldOverrideUrlLoading)

說明: Android WebView的快取機制就不多說了,這裡是單獨自己攔截css,js和圖片等自己進行快取。 需求:Android客戶端需要攔截網頁的每個css,js,圖片等,然後根據實際情況判斷來使用本地儲存卡或者assets中的js,css和圖片資源。 實現:

gulp-rev 添版本

node nal lec nod exp reg spl lena ffi 打開node_modules\gulp-rev\index.js 第144行 manifest[originalFile] = revisionedFile; 更新為: manifest[origi

為 Laravel Mix 編譯的 JavaScript 和 CSS 檔案版本

加版本號,什麼意思?我們來看 Github 網頁原始碼中是怎樣引入 JavaScript 和 CSS 檔案的。 <link crossorigin="anonymous" href="https://assets-cdn.github.com/assets

python檢測U盤的插入,以及進行自動複製檔案並寫入檔案

技術要點分析: 1.如何檢測有U盤的插入。 2.如何複製U盤裡面的東西 3.如果U盤可寫,如何寫入檔案到U盤裡面。 # -*- coding: utf-8 -*- # @Time : 20

前端自動化構建之 gulp 合併 壓縮 版本

先安裝nodejs cmd 控制檯 cd到網站目錄下 安裝gulp及一些用到的外掛 npm install -g gulp npm install --save-dev gulp npm install --save-dev gulp-watch npm install -

使用gulp-concat合併js檔案

1.安裝nodejs、構建目錄、初始化專案 2.安裝gulp-concat外掛 在專案目錄下開啟命令提示符工具 按下 ctrl+r --> 輸入 cmd 安裝gulp-concat npm install gulp-conc

java專案打包版本清理快取

一篇我們主要介紹了在程式碼中怎麼處理可以做到清理快取的效果,這篇我們說說在打包的時候加版本號,意義上就是給靜態資源加版本號,意思我們每次打包的靜態頁面都是一個全新的頁面,通過這種方式來達到清理快取的目的;為達目標不擇手段嗎! 1.maven專案打包增加版本號,利用maven外掛:com.goo

spring cloud: zuul(四): 正則表達式匹配其他微服務(給其他微服務版本)

其他 服務 sim 技術分享 怎麽 正則表達式 highlight csharp light spring cloud: zuul(四): 正則表達式匹配其他微服務(給其他微服務加版本號) 比如我原來有,spring-boot-user微服務,後臺進行叠代更新,另外其了一個

今天是給客戶端版本的一天

情景:東哥想給客戶端加上一個版本號,是我們的核心版本號。方便以後我們維護。(贊) 解決:我在配置檔案裡面寫了一個核心版本號,將配置檔案的核心版本號繫結在顯示核心版本號的控制元件上(textbox.text) 然後:東哥說在配置檔案裡,實施會瞎改(實施是神經病嗎 為什麼要瞎改,fine,確實可能被改,那我就

一次專案中Gulp的使用(壓縮、新增版本,自動化打包)

一次專案中Gulp的使用 Gulp的準備工作 安裝Gulp 專案中初始化gulp 編寫gulp指令碼 打包結果 拓展 Gulp的準備工作 前段時間接手一個war專案,springmvc 前端

c# 標題欄自動新增軟體名和版本

軟體名和版本資訊可以在屬性裡設定,如下: 一般都是在軟體啟動後立刻重新整理,所以我寫在軟體載入時的事件裡,程式碼如下 private void MainForm_Load(object sender, EventArgs e) {

js檢測ie瀏覽器版本

檢測IE瀏覽器版本號,不同的ie版本不一致! function IEVersion() { var userAgent = navigator.userAgent; //取得瀏覽器的userAgent字串 var isIE = us

檢視java class檔案的編譯版本

用maven做專案依賴管理,依賴了一個其他組開發的一個基礎包。結果,在使用maven進行編譯打包的時候,報了錯: Unsupported major.minor version 51.0。 注:我本機上目前只安裝了 jdk 1.8 使用Eclispse自帶的

Spring配置檔案中xsd版本的問題

今天將以前的一個專案移植到新機器上開發,在原本的機器上跑得好好的專案移植過來之後報了個莫名其妙的錯: 在xml中給我說xsd的版本不對,於是將原本的如下程式碼片: xsi:schemaLocation="http://www.springframework.org/sche