gulp-changed的使用:只編譯改動過的文件

這是一個很是小的Gulp使用問題,小到我都以爲上不了檯面,可是對於新手來講,仍是有參考價值和實用價值的,因而就以問答的方式簡短的描述一下。高手繞道css

邂逅問題

在給一個老的工程添加gulp配置的時候,爲了保證編譯打包的速度,我堅決果斷的選擇了gulp-changed插件,該插件可以實現只編譯或打包改變過文件,大大加快了gulp task的執行速度。
因而,我就根據官方文檔,添加了一行代碼:npm

.pipe(changed(DEST))

添加以後,貌似稍微變快了一點點,可是每次watch文件改動以後,瀏覽器那邊要刷好幾回才能出來正確的編譯後的結果,我一看:此事必有蹊蹺gulp

查找緣由

因而,我立刻使用了gulp-debug來查看,添加了一行以下代碼,來查看每次編譯的時候都有哪些文件經過了流,是否是僅僅只有哪些變更了的文件。瀏覽器

.pipe(debug({title: '編譯:'}))

不看不知道,一看嚇一跳:基本上每次編譯的時候全部的jsx文件都從新編譯了一遍,難怪這麼慢。
圖片描述spa

解決方法

每次編譯的時候,只有jsx會所有從新編譯一遍,js和css文件卻不會,我的本能的以爲多是文件名後綴的緣由。
因而,又從新看官方文檔,結果在下面找到了這些:
圖片描述
原來,編譯先後文件名後綴若是發生改變的話,須要單獨配置的啊。。。具體緣由不探究了,留給有心人去發掘吧。
改成以下形式,問題就解決了:插件

.pipe(changed(dist,{extension:'.js'}))

這纔是正常的節奏嘛!!
圖片描述debug

總結

  • 出現問題首先看官方文檔。3d

  • 看文檔要看全。code

相關文章
相關標籤/搜索