WEBPACK-SPRITESMITH配置簡述
前注:
文件全文請檢視 根目錄的文件說明。
如果可以,請給本專案加【Star】和【Fork】持續關注。
有疑義請點選這裡,發【Issues】。
0、使用說明
安裝:
npm install
複製程式碼
執行:
// 開發模式(推薦使用這個)
npm run dev
// 打包到dist目錄
npm run build
複製程式碼
單獨安裝 webpack-spritesmith:(由於有雪碧圖,所以記得,至少要有 file-loader
)
npm i --save webpack-spritesmith
複製程式碼
1、概述
webpack-spritesmith
簡單來說,就是把小圖片拼成雪碧圖,然後通過 css 類引入(再也不需要你自己寫雪碧圖的css,和在ps裡面拼雪碧圖了)。
我們之前用 url-loader
來將圖片轉base64字串,這是另外一種解決方案,據說雪碧圖的效能更好一些。
使用說明:
- 將小圖片放到某一個資料夾;
- 通過配置拿到這個資料夾下,字尾名符合要求(自己配置)的所有圖片;
- 自動生成雪碧圖和 css 檔案,並插入到配置好的資料夾內;
- css 檔案自動引入了雪碧圖(需要自行配置相對路徑);
- 使用者引入 css 檔案,然後使用指定類即可;
2、配置
【這裡不是英文文件的直接翻譯】,示例參照DEMO
1、src 簡單來說,這個屬性用於配置你從哪裡捕獲這些小圖片。這就意味著,你需要把加入雪碧圖的圖片,單獨放到某一個資料夾。
cwd
必填
就是小圖片所在的目錄啦,注意,不會遞迴子目錄(即子目錄裡的會被無視)
glob
必填
型別是字串,語法是glob語法(類似正則語法),有點像loader匹配符合要求的檔名。
複製程式碼
2、target 輸出檔案的配置
image
必填
把雪碧圖輸出到哪(需要帶檔名)(注意這裡不是指打包後,而是指打包前,實際打包還是被url-loader處理的)
css
必填
輸出的css檔案,可以是字串、或者陣列(如果是陣列的話,輸出多個同樣的檔案)
複製程式碼
3、apiOptions 配置屬性
generateSpriteName
可選,
是一個函式,有一個引數(是檔案的絕對路徑,字串),預設值是返回檔名(不含字尾和路徑)。
這個用於命名類名,預設是檔名作為類名
cssImageRef
必填,
生成的圖片在 API 中被引用的路徑。
簡單來說,就是你上面輸出了 image 和 css ,那麼在 css 用什麼樣的路徑書寫方式來引用 image 圖片(可以是別名,或相對路徑)
handlebarsHelpers
可選
是一個物件,並且是全域性的(意味著後面的本外掛的這個配置會覆蓋前面的配置)。
給 handlebars 用的,沒搞懂,但一般用不上。
複製程式碼
4、spritesmithOptions 可選,配置 spritesmith 用的。裡面可以定製比如雪碧圖的排列方向。
5、retina 可選,retina 屏的配置。略略略。
關於解決 retina 屏的雪碧圖的問題,可以參考這個 Retina屏下的CSS雪碧圖,所以最好給 spritesmithOptions.padding 屬性賦值 2。
這個屬性用於圖片放大縮小。
6、customTemplates
可選,
這個應該是指使用者自定義 css 模板,
官方參考模板是:/node_modules/spritesheet-templates/lib/templates/css.template.handlebars
這個檔案。
3、問題答疑
【問題一】為什麼每個類名都以.icon-
開頭?
【答】因為其使用的是 handlebars 模板 node_modules/spritesheet-templates/lib/templates/css.template.js
然後模板中 selector
的值是被 node_modules/spritesheet-templates/lib/templates/css.template.js
處理過的。
【問題二】我如何更改雪碧圖的 css 模板?
【答】參考問題一中,給的 css 模板,然後自己在 customTemplates 去修改。