如何在前端工程中在自動壓縮圖片

一移稳、需求背景

在項目開發(fā)中,從設計師那里拿到圖片后摔笤,不知道小伙伴們都是怎么處理的呢?
是不是都習慣了將圖片扔到tinypng.com進行壓縮后再放回到項目上提交垦写?

由于設計師給的圖片一般是原圖吕世,直接放到項目上,會因為大小過大梯投,影響用戶體驗命辖。所以開發(fā)在拿到圖片后,一般會先進行壓縮分蓖,犧牲一點品質(zhì)尔艇,換取大小上的優(yōu)化。

而每次手動壓縮再上傳的流程么鹤,效率著實不高终娃,對一個程序員來說,不斷做重復工作時蒸甜,就要考慮是不是該換種操作了棠耕。

二、工具選擇

像 tinypng.com 在線工具迅皇,背后使用了多種壓縮方式昧辽,能極大程度地降低圖片大小,壓縮率很高登颓。但同時也存在一些局限搅荞,比如只能壓縮png和jpg、受網(wǎng)絡線路影響框咙、壓縮接口有次數(shù)限制咕痛,需要付費解鎖等。

而本地工具 imagemin喇嘱,不僅沒有網(wǎng)絡限制茉贡,也不需要付費,通過插件體系者铜,還可以加載不同的壓縮工具處理各種情況腔丧。

經(jīng)過簡單的對比,選擇了 imagemin 作為壓縮工具作烟。

三愉粤、壓縮時機

在項目中的自動化操作,很自然就想到了 webpack拿撩。通過使用 webpack衣厘,在 build 的時候進行壓縮。打包出來的圖片就是壓縮好的了,而且 webpack 中影暴,各種插件也比較全错邦,很容易就能找到合適的壓縮插件。

但使用 webpack 有個問題型宙,在每次構建時撬呢,都會執(zhí)行壓縮操作,而且壓縮過的文件也會被再次執(zhí)行壓縮早歇。圖片多的情況下倾芝,壓縮過程耗時也會相對更多讨勤。

那有沒有在提交新文件前進行壓縮的操作箭跳?

答案是 line-staged
line-staged 一般用的比較多的地方是配合 eslint 進行提交前的格式校驗和格式化潭千,但其實它的作用遠不止于此谱姓。它的作用很純粹,就是再提交更改前刨晴,將更改文件的 path 作為參數(shù)傳到配置的命令行工具上屉来,也就是說,我們可以再這里配置壓縮工具狈癞,就能夠在提交圖片前進行壓縮茄靠。

四、命令行工具

line-staged 上推薦了一個圖片壓縮的工具:imagemin-lint-staged蝶桶。但是其使用的是無損壓縮慨绳,不能滿足項目的需求。所以我參考 imagemin-lint-staged 自己寫了一個:imagemin-linter真竖∑暄可進行有損壓縮與無損壓縮的配置,使用如下:

安裝:

npm i -D husky lint-staged imagemin-linter

配置 package.json:

    ...
    "husky": {
        "hooks": {
            "pre-commit": "lint-staged"
        }
    },
    "lint-staged": {
        "*.{png,jpeg,jpg,gif,svg}": "imagemin-linter",
    },
    ...

配置完成后恢共,在每次提交更改時战秋,就能自動對圖片進行壓縮。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末讨韭,一起剝皮案震驚了整個濱河市脂信,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌透硝,老刑警劉巖狰闪,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蹬铺,居然都是意外死亡尝哆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門甜攀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秋泄,“玉大人琐馆,你說我怎么就攤上這事『阈颍” “怎么了瘦麸?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長歧胁。 經(jīng)常有香客問我滋饲,道長,這世上最難降的妖魔是什么喊巍? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任屠缭,我火速辦了婚禮,結果婚禮上崭参,老公的妹妹穿的比我還像新娘呵曹。我一直安慰自己,他們只是感情好何暮,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布奄喂。 她就那樣靜靜地躺著,像睡著了一般海洼。 火紅的嫁衣襯著肌膚如雪跨新。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天坏逢,我揣著相機與錄音域帐,去河邊找鬼。 笑死词疼,一個胖子當著我的面吹牛俯树,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贰盗,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼许饿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了舵盈?” 一聲冷哼從身側響起陋率,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秽晚,沒想到半個月后瓦糟,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡赴蝇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年菩浙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡劲蜻,死狀恐怖陆淀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情先嬉,我是刑警寧澤轧苫,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏腻脏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一岔乔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拗小,春花似錦重罪、人聲如沸樱哼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搅幅。三九已至阅束,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間茄唐,已是汗流浹背息裸。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沪编,地道東北人呼盆。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像蚁廓,于是被迫代替她去往敵國和親访圃。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345