九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
gulp使用小結(jié)(一)

這篇文章不會介紹 gulp 的起源、發(fā)展;不會去一個個講解 gulp API;也不想出現(xiàn)大段大段的 gulpfile.js 代碼;更木有幫你分析 gulp 實現(xiàn)原理,只有一些我自己對 gulp 的使用理解和總結(jié)。

如何通過 gulp 讓偶們的前端項目高大上的跑起來?gulp 能做什么,還能做什么?gulp套路能不能來幾套?... 希望通過這篇文章你會找到答案

寫作風(fēng)格的原因,勞資寫的文章都較詳(啰)細(xì)(嗦),請輕拍:)

當(dāng)然,同樣期待能得到伙伴們的討論和支持。

目錄

  • 簡單介紹
  • 必備插件
  • 常用插件
  • 進(jìn)階插件
  • 聊聊 gulpfile.js
  • 套路
  • 結(jié)語
  • 推薦閱讀

簡單介紹

這篇文章的目的是:介紹些我知曉的 gulp plugins,然后用少量的代碼講解,最終希望大家能用 gulp 讓前端項目高大上的跑起來

默認(rèn)讀者知道點 npm/cnpm;明白 package.json 是作甚的;了解 gulpfile.js 是作甚的。

這篇文章起草于2014年下半年,那時 gulp 還算個較新潮的玩意。所以在項目實踐的過程中,自己記錄鳥不少使用收獲,心里悶騷的想,等哪天有空再潤色一把即可分享出去,但特么拖拖拉拉的就到2016年...

轉(zhuǎn)眼 gulp 都已快被歸類為過時的技術(shù)鳥(《我為何放棄Gulp與Grunt,轉(zhuǎn)投npm scripts》,有關(guān)這篇文章下一篇偶再單獨(dú)細(xì)聊),于是趁著周末之余,火速整理下自己的 gulp 套路發(fā)布出來,也希望對其他小伙伴有點用。

本文最下方有一些 文章/文檔 的閱讀推薦:)

必備插件

【必備】不是指每次項目都得用,而是指最基礎(chǔ)的。你可以不用,但是得知道的那些gulp插件

以下插件的方向都各自有不少相似的插件,所以不必過多糾結(jié),用的開心就行

  • gulp-htmlmin 看到名字就能知道,這個插件是用來壓縮 HTML。PS:注釋啥的都可以去掉哦,看文檔get更多技能哈
  • gulp-imagemin 除了能壓縮常見的圖片格式,還能壓縮 SVG,叼叼的~
  • gulp-clean-css 壓縮 CSS。我原本推薦的是 gulp-minify-css,結(jié)果其首頁中已建議改用gulp-clean-css...
  • gulp-uglify 專業(yè)壓縮 Javascript
  • gulp-concat 上面幾個都是壓縮,這插件是管合并的...恭喜,“減少網(wǎng)絡(luò)請求”的成就達(dá)成:)
  • gulp-autoprefixer 給 CSS 增加前綴。解決某些CSS屬性不是標(biāo)準(zhǔn)屬性,有各種瀏覽器前綴的情況,灰常有用
  • gulp-rename 修改文件名稱。比如有時我們需要把app.js改成app.min.js,瞬間高級了
  • gulp-util 最基礎(chǔ)的工具,但俺只用來打日志...

常用插件

相對于必備插件,常用插件都是些【有用】但使用場景和頻率沒那么高的好插件

  • run-sequence gulptask 都是并行(異步)執(zhí)行,如果遇見需要串行的場景,那么這個插件就是必備了。偶的使用場景是:處理(壓縮、合并等等) CSS/JS、再gulp-rev、再上傳 CDN;然后使用 CDN的地址替換 HTML 中的 CSS/JS 地址,再壓縮 HTML。那么替換 HTML 這步須在之前的工作處理完后再執(zhí)行。 ** 最后要說,gulp4.0發(fā)布后,不需要RS也可以搞定串行任務(wù)了 **
  • del / gulp-clean 刪除。俺的使用場景是:JS/CSS 文件都會在壓縮后使用gulp-rev,即文件名被hash,然后再上傳到 CDN,最后俺再使用 刪除插件 把本地壓縮后的文件刪除掉,不用多余保存。
  • gulp-rev 把靜態(tài)文件名改成hash的形式。
  • gulp-rev-replace 配合 gulp-rev 使用,拿到生成的 manifest。json 后替換對應(yīng)的文件名稱。
  • gulp-rev-collector 到線上環(huán)境前,我會用來配合gulp-rev使用,替換 HTML 中的路徑
  • gulp-rev-append 給頁面引用的靜態(tài)文件增加hash后綴,避免被瀏覽器緩存...當(dāng)然,如果是使用 CDN,這個套路就不行了
  • gulp-connect / gulp-livereload LiveReload 的倆款插件都值得擁有,不過都各稍有學(xué)習(xí)成本,看看文檔就明白鳥
  • gulp-sourcemaps 處理 JavaScript 時生成 SourceMap;如果你不了解 SourceMap,可以看看這篇阮一峰大神的《Source Map 詳解》
  • gulp-load-plugins 幫忙偷懶用的,可以幫我們加載插件,不用require或者import...當(dāng)然,俺個人感覺用了這個插件后,閱讀gulpfile.js的可讀性差了,魚和熊掌不可兼得:(
  • gulp-jshint JavaScript 代碼校驗
  • gulp-sass / gulp-lessCSS 的同學(xué)都懂哈

進(jìn)階插件

必備插件和常用插件都有一個特點,就是下載數(shù)都不小。雖然有少部分插件下載數(shù)相對不多,但同樣值得擁有或了解

  • babel JS 語法新特性用起來。這個插件可以讓我們用新的 標(biāo)準(zhǔn)/特性/提案JavaScript 代碼,然后再向下 轉(zhuǎn)換編譯,最終生成隨處可用的 JavaScript 代碼。更通俗的說話就是:可以用新的規(guī)范寫代碼,經(jīng)過 babel 編譯后生成沒有兼容問題的代碼。
  • gulp-flatten 移動指定文件,不想壓縮或者合并的時候,直接用這個插件把對應(yīng)文件移動到指定文件夾。俺偶爾在內(nèi)部項目會偷懶用上,圖方便:)
  • gulp-coffee CoffeeScript 值得去了解
  • gulp-markdown-pdfMarkdown 編譯為 PDF
  • gulp-markdown 寫手的福音,可以把 Markdown 轉(zhuǎn)成 HTML
  • gulp-html2mdHTML 編譯為 Markdown
  • gulp-tinypng 超屌的圖片壓縮工具,使用 Tinypng 引擎。PS:因為 Tinypng 免費(fèi)賬號有月限制,所以使用使需注意。
  • sprity 生成雪碧圖。稍有點學(xué)習(xí)成本,仔細(xì)閱讀文檔即可。
  • gulp-if 可以在 pipe 里面寫點邏輯了,屌不屌。舉例:比如處理 ./pub/*.js,如果文件名稱是 xxx.js,那么不處理;更可以用來區(qū)分當(dāng)前是開發(fā)環(huán)境還是生產(chǎn)環(huán)境。
  • gulp-file-include 俺搞內(nèi)部項目的時候會用到,讓 HTML 組件化的第一小步
  • gulp-git 直接在 Build 時把代碼都提交到 git上了...特么勞資懶起來連我自己都害怕
  • gulp-qiniu 用于把指定文件上傳至七牛的指定路徑下(PS:首先,你得有自己的七牛賬號和空間)
  • gulp-notify 在控制臺中加入文字描述,build 的時候更高級有木有。當(dāng)然,當(dāng)需要的時候把錯誤信息也展示出來會很有幫助。更高級的功能就需要你查看其文檔了~
  • gulp-plumber gulp 的錯誤處理有點坑,假如發(fā)生錯誤進(jìn)程就掛了。相對的解決辦法不少,但是這個是我個人比較推薦的,比特么在容易出錯的地方寫錯誤監(jiān)聽靠譜。所以這個插件可以阻止 gulp 插件發(fā)生錯誤導(dǎo)致進(jìn)程退出并輸出錯誤日志。

聊聊 gulpfile.js

gulp API 真沒啥好說的,所以也從沒打算花時間介紹,那這一節(jié)勞資要說說啥呢...干貨!

已經(jīng)枯燥的balabala一通插件,所以偶用自己的方式聊聊這個 gulpfile.js。PS:默認(rèn)讀者了解,所以不堆代碼了哈

一個較簡單的前端項目,gulpfile.js 可以輕松上百行,稍復(fù)雜點兒的此文件會更大,肯定會不方便閱讀和維護(hù)。

下面這套目錄結(jié)構(gòu),是適合較復(fù)雜前端項目的 gulpfile.js 套路,僅供參考:

{% highlight Delphi linenos %}
gulpfile.js
gulp-conf/
├── env.js // 環(huán)境相關(guān)
├── global.js
└── qiniu.js // CDN
gulp-tasks/
├── xxx.js
├── xxxx.js
├── ...
├── image.js
├── log.js
├── release.js
└── watch.js
{% endhighlight %}

  • 第一行中的 gulpfile.js 也可換成 gulpfile.babel.js。如果想看 gulpfile.babel.js 的示例可以去 https://github.com/google/web-starter-kit/blob/master/gulpfile.babel.js
  • gulp-conf 路徑、公共參數(shù)等等,把有必要都變成配置文件,代碼優(yōu)雅多了。當(dāng)然,如果沒有必要就別麻煩了,視情況來
  • gulp-tasks 內(nèi)的各個文件都是些分類型的子任務(wù),這樣一拆分 gulpfile.js 必定清爽很多,關(guān)鍵是之后維護(hù)各種 task 也簡單很多

不貼代碼的原因是因為我只想提供個 文件夾套路,其實怎么用著爽、怎么分類、甚至怎么取名這些都見仁見智,反正目的是讓代碼組織的夠清晰、好維護(hù),那么偶們的目標(biāo)就達(dá)到鳥

套路

這節(jié)會基于這些插件的相互配合和清晰的 gulp 目錄結(jié)構(gòu),讓偶們的前端項目快速且高大上的 build 起來!

偶這粗暴的把套路分成三類:一種是相對簡單點的;一種是稍稍復(fù)雜點的;一種是“玩”的比較復(fù)雜的。區(qū)分的原則是這仨套路的目標(biāo)會有稍許不同,而且項目需求也不同。搞清楚我們(項目)到底想要得到什么,那么剩下的就是去實現(xiàn)它了!

附加組合 這類在這篇就不說了,比如 gulp+webpack 這種 CP,針對 React 項目可以面面俱到。。。這如果要分析起來,比特么 gulp 復(fù)雜多了去了。

如果你問我,有木有最簡單的套路,答曰:有!

如果你問我,最簡單的方法是神馬,答曰:不要用這些 build 工具...

哇哈哈哈哈哈哈~

簡單套路

項目/人群 目標(biāo):要求較高的個人項目、公司內(nèi)部項目、小商業(yè)項目

主要需求:

  1. HTML 也得 組件化(這詞我有點反感,真聽得爛大街了)。該 common 的拎出來;該 widget 的拎出來
  2. 圖片壓縮、合并
  3. JS/CSS/HTML 壓縮、合并
  4. sass/less 必須得用起來,要不 CSS 怎么顯得高大上
  5. 額...差不多夠了吧,畢竟我們只是入門的簡體套路,再復(fù)雜點兒 gulpfile.js 的體積就不小了:)

一般套路

項目/人群 目標(biāo):喜愛嘗試的個人項目、一般商業(yè)項目、要求較高的開源項目

主要需求:

  1. 簡單套路里面的都包括
  2. JavaScript 部分用 ES6 來編寫... PS:技術(shù)紅利不用白不用嘛
  3. JavaScript 代碼校驗用起來
  4. CSS 方面根據(jù)設(shè)置項目所需的瀏覽器版本,從而自動處理瀏覽器前綴
  5. 所有靜態(tài)文件全部上 CDN
  6. task 進(jìn)行拆分,使其更好維護(hù)

復(fù)雜套路

項目/人群 目標(biāo):商業(yè)項目、代碼潔癖者...額,再加一箱:程序員中的單身狗:)

主要需求:

  1. 一般套路里面的都包括
  2. 增加對 gulp 進(jìn)程出錯的優(yōu)雅處理
  3. 更多 task 信息的相關(guān)展示
  4. task 中有邏輯處理,比如執(zhí)行某 task 會判斷是否是開發(fā)環(huán)境,然后可以有相應(yīng)的處理
  5. 自動清理掉那些不需要的 tmp 文件(臨時文件),只留下真正有用的代碼
  6. LiveReload
  7. 代碼自動同步 git
  8. 勞資實在編不下去了...

結(jié)語

你的插件應(yīng)該只做一件事,并且做好

寫插件原本是我想好好寫的地方,發(fā)現(xiàn)中文文檔已經(jīng)非常豐富了,那就不費(fèi)那個勁了,直接貼官方地址:http://www.gulpjs.com.cn/docs/writing-a-plugin/

最后聊聊我眼中的 gulp

  • gulp 目前有相關(guān)插件2266個
  • gulp 是基于 Node 的,95%的代碼都是 JavaScript,5%的代碼是 Shellnpmjs.com顯示上個月的下載超過210W,當(dāng)前(2016/04/30)release 的版本是3.9.1
  • 神馬?安裝各種插件還是用 npm?趕緊 cnpm 用起來,安裝速度噌噌的
  • gulp VS grunt 這話題已經(jīng)被說爛,但我還是想說說。個人覺得玩grunt是種寫配置的感覺;玩gulp就是寫腳本(task),且gulp更容易上手、更高效。 推薦讀者看看這篇文章Gulp vs Grunt,寫的著實深入淺出
  • 編譯 CoffeeScript
  • 編譯 less / sass
  • HTML 編譯為 Markdown
  • Markdown 編譯為 HTML/pdf
  • Excel 編譯為 HTML/JSON
  • 開發(fā) React 項目時和好基友 webpack 配合,酸爽到爆,推薦同事的一篇文章,我司目前的React 項目基本就是這個套路:《基于gulp和webpack的前端工程化》
  • ...

最近在InfoQ上有讀到一個系列的文章,是討論 gulpnpm script 優(yōu)劣,地址 - 《我為何放棄Gulp與Grunt,轉(zhuǎn)投npm scripts》。篇幅有限,下周末的文章我再拿出來討論,不過推薦大家閱讀,還是值得我們思考的。

下一篇會把這篇文章所介紹的套路,用代碼體現(xiàn)出來,文章發(fā)布時git會同步更新,地址:gulp-demos

推薦閱讀

作者:聶微東
出處:http://www.cnblogs.com/Darren_code/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
基于gulp編寫的一個簡單實用的前端開發(fā)環(huán)境
gulp+webpack構(gòu)建配置
使用gulp構(gòu)建nodejs,你只需要記住5個函數(shù)
Gulp
前端構(gòu)建工具gulpjs的使用介紹及技巧
計算機(jī)技術(shù)|前端自動化構(gòu)建工具Gulp.js
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服