国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

簡單談?wù)刧ulp-changed插件

2024-05-06 15:11:04
字體:
供稿:網(wǎng)友

前言

gulp-changed插件的作用,是用來過濾未被修改過的文件,只有修改后的文件才能通過管道。這樣做的好處時,只處理修改后的文件,減少后續(xù)程序的執(zhí)行時間。

根據(jù)官方給出的例子:

const SRC = 'src/*.js';const DEST = 'dist';gulp.task('default', () => { return gulp.src(SRC)  .pipe(changed(DEST))  .pipe(gulp.dest(DEST))  .pipe( /* 其他操作 */ );});

檢測SRC中的文件,然后把從changed()通過的文件輸出到DEST文件夾中,然后繼續(xù)進行后續(xù)的操作。在這之前,我寫的代碼是這樣子的,沒有傳入?yún)?shù),也沒有輸出到某文件夾中(gulp.dest(DEST) ):

gulp.task('default', () => { return gulp.src('src/*.js')  .pipe(changed())  .pipe( /* 其他操作 */ );});

然后發(fā)現(xiàn),每次執(zhí)行時,所有的文件都會通過管道,根本沒有過濾的作用。看了源代碼之后才知道,傳遞參數(shù)和文件輸出是必須的,因為程序里是拿兩個文件夾SRC和DEST里的文件進行對比的。

每當檢測一個程序時,都會去DEST里的文件夾里尋找這個對應(yīng)的文件,若DEST最后修改時間發(fā)生變化或內(nèi)容已更新,則表明這是一個新文件,通過管道,否則保留。程序里目前使用的是兩個文件最后修改時間的對比,若SRC里的文件的最后修改時間比DEST里文件的最后修改時間要大,說明該文件被修改過。

當然,gulp-changed還提供了一種比較函數(shù):內(nèi)容的對比。將源文件和目標文件的內(nèi)容進行sha1加密后,比較兩者的加密串,若不相同,則通過管道。

可通過傳遞參數(shù)修改比對函數(shù):

gulp.task('default', () => { return gulp.src(SRC)  .pipe(changed(DEST, {hasChanged: changed.compareSha1Digest}))  .pipe(gulp.dest(DEST))  .pipe( /* 其他操作 */ );});

當然,你可以傳遞自己定義的函數(shù),但是需支持以下4個參數(shù):

    stream 文件通過對比后將sourceFile添加到隊列中 callback 函數(shù)里的代碼執(zhí)行完畢后的回調(diào)函數(shù) sourceFile vinyl 文件對象 destPath 與sourceFile文件對比的目標文件路徑

源碼講解

這個方法里,是對兩個文件最后修改時間的對比

function compareLastModifiedTime(stream, cb, sourceFile, targetPath) { // 獲取目標文件的狀態(tài) fs.stat(targetPath, function (err, targetStat) { // 若源文件存在 if (!fsOperationFailed(stream, sourceFile, err)) { // 對比兩者的最后修改時間 if (sourceFile.stat.mtime > targetStat.mtime) { stream.push(sourceFile); } } cb(); });}

這里有個疑問的地方:

若目標文件不存在,則當前情況是無法進行比較的,只能在運行一次之后,產(chǎn)生了目標文件;再修改源文件才能進行對比;新添加的文件同理
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 邯郸县| 汨罗市| 台北县| 瑞安市| 开鲁县| 怀远县| 辉南县| 民丰县| 通化市| 荣昌县| 印江| 大姚县| 景谷| 平昌县| 华亭县| 阿图什市| 深泽县| 彩票| 安龙县| 阳信县| 靖州| 嘉祥县| 万盛区| 乌兰察布市| 崇信县| 棋牌| 蕉岭县| 沙洋县| 东源县| 兴文县| 兴业县| 富源县| 肥西县| 昭苏县| 青岛市| 乌拉特后旗| 丰原市| 化州市| 牟定县| 田阳县| 治县。|