摘要:舉一個(gè)栗子通過上面這段代碼,可以快速替換所有文檔中的為。當(dāng)前的,擁有等有用的信息。不過當(dāng)你使用的時(shí)候情況不同,執(zhí)行就相當(dāng)于告訴,你的插件將會以異步方式運(yùn)行,所以這個(gè)時(shí)候你的新的將不會被采納,知道你使用。
gulp-bufferify是我之前寫的一個(gè)gulp插件,其實(shí)它沒有實(shí)際的功能性用處,但是利用它可以快速實(shí)現(xiàn)一個(gè)gulp插件。舉一個(gè)栗子:
import bufferify from "gulp-bufferify" gulp.src("./**/*.txt") .pipe(bufferify(content => content.replace(/sam/g, "tom"))) .pipe(gulp.dest("."))
通過上面這段gulp代碼,可以快速替換所有txt文檔中的sam為tom??梢哉f,每一個(gè)gulp-bufferify就是一個(gè)插件,你可以利用它完成你想要的功能。
我們來看看他的使用方法:
let factory = (content, file, context, notifier) => {} bufferify(factory)
工廠函數(shù)factory有四個(gè)參數(shù):
content
經(jīng)過toString()的文檔內(nèi)容,一般在處理文本類型的文檔時(shí)可以直接使用。
file
當(dāng)前buffer的file,擁有file.path, file.contents, file.clone()等有用的信息。
context
管道中的上下文,相當(dāng)于stream中的this??梢酝ㄟ^它實(shí)現(xiàn)文件的添加修改和刪除。具體的話,你還得知道stream的相關(guān)知識。
notifier
用在異步處理中,通知生成器,使用方法如下:
.pipe(bufferify((content, file, context, notifier) => { let callback = notifier() setTimeout(() => callback(), 3000) }))
上面這段代碼是異步處理的,當(dāng)callback()執(zhí)行時(shí),stream才會進(jìn)入下一個(gè)管道。
工廠函數(shù)的返回值應(yīng)該是新的content,當(dāng)你返回一個(gè)新的content的時(shí)候,這個(gè)buffer的內(nèi)容就會被新的content替換(buffer文件是文本文件)。
而如果你返回的值為非真時(shí),原始的content將被使用。
不過當(dāng)你使用notifier的時(shí)候情況不同,執(zhí)行notifier()就相當(dāng)于告訴gulp-bufferify,你的插件將會以異步方式運(yùn)行,所以這個(gè)時(shí)候你return的新的content將不會被采納,知道你使用callback()。callback的使用方法和though2的callback使用方法是一樣的,假如你修改了buffer文件,必須采用如下的形式:
.pipe(bufferify((content, file, context, notifier) => { let callback = notifier() let newcontent = content.replace("you", "me") file.contents = new Buffer(newcontent) setTimeout(() => callback(null, file), 3000) }))
在gulp-bufferify中,真正改變stream的,主要是bufferify函數(shù)的返回值和context,返回新的content將改變file.contents,而使用context則可以在stream中新增文件。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/82449.html
摘要:所以出現(xiàn)了各種前端構(gòu)建化工具也應(yīng)運(yùn)而生等已經(jīng)成為現(xiàn)在前端開發(fā)工程師的必備技能之一。結(jié)語今天的分享就告一段落啦希望能對大家有所幫助。 在互聯(lián)網(wǎng)告訴發(fā)展的今天,自node出現(xiàn)后,我們前端也越來越大(心里美美噠~),同樣帶來的Web業(yè)務(wù)日益復(fù)雜化和多元化,模式也都想webPage模式轉(zhuǎn)向webApp模式,拼幾個(gè)頁面搞幾個(gè)jquery的插件就能搞一個(gè)完成一個(gè)項(xiàng)目的日子已經(jīng)是很久遠(yuǎn)的曾經(jīng)了,而且...
摘要:承接前一篇做一個(gè)合格的前端,自動化構(gòu)建工具入門教程故而整理了如下插件資源大全。接下來我會逐一開源觀點(diǎn)網(wǎng)開發(fā)過程中的前后端技術(shù),如全文索引自定義富文本編輯器圖片上傳壓縮水印等等。 承接前一篇《做一個(gè)合格的前端,gulp自動化構(gòu)建工具入門教程》故而整理了如下gulp插件資源大全。**【我的新作觀點(diǎn)網(wǎng):http://www.guandn.com (觀點(diǎn)網(wǎng)是一個(gè)獵獲新奇、收獲知識、重在獨(dú)立思考...
摘要:下載打包插件引入引入的插件是個(gè)方法,必須記住調(diào)用。神來之筆其他的插件不用再引入了使用方法所有的插件用引出,其他插件的方法名統(tǒng)一為插件的功能名字即插件名字的最后一部分如將轉(zhuǎn)換為將轉(zhuǎn)換為的文件輸出到下實(shí)時(shí)刷新 Gulp介紹 中文主頁: http://www.gulpjs.com.cn/ gulp是與grunt功能類似的前端項(xiàng)目構(gòu)建工具, 也是基于Nodejs的自動任務(wù)運(yùn)行器 能自動化...
摘要:下載打包插件引入引入的插件是個(gè)方法,必須記住調(diào)用。神來之筆其他的插件不用再引入了使用方法所有的插件用引出,其他插件的方法名統(tǒng)一為插件的功能名字即插件名字的最后一部分如將轉(zhuǎn)換為將轉(zhuǎn)換為的文件輸出到下實(shí)時(shí)刷新 Gulp介紹 中文主頁: http://www.gulpjs.com.cn/ gulp是與grunt功能類似的前端項(xiàng)目構(gòu)建工具, 也是基于Nodejs的自動任務(wù)運(yùn)行器 能自動化...
摘要:下載打包插件引入引入的插件是個(gè)方法,必須記住調(diào)用。神來之筆其他的插件不用再引入了使用方法所有的插件用引出,其他插件的方法名統(tǒng)一為插件的功能名字即插件名字的最后一部分如將轉(zhuǎn)換為將轉(zhuǎn)換為的文件輸出到下實(shí)時(shí)刷新 Gulp介紹 中文主頁: http://www.gulpjs.com.cn/ gulp是與grunt功能類似的前端項(xiàng)目構(gòu)建工具, 也是基于Nodejs的自動任務(wù)運(yùn)行器 能自動化...
閱讀 1182·2021-11-19 09:40
閱讀 992·2021-11-12 10:36
閱讀 1297·2021-09-22 16:04
閱讀 3146·2021-09-09 11:39
閱讀 1297·2019-08-30 10:51
閱讀 1910·2019-08-30 10:48
閱讀 1251·2019-08-29 16:30
閱讀 501·2019-08-29 12:37