Postprocessor (PostCSS)
以最知名的 PostCSS 為例,它是一個使用 JavaScript 轉換 CSS 的工具,它提供很多的 API 來分析、修改 CSS 的規則,因此它可以被利用來開發各種的工具,在拓展性極高的狀況下,它其實並不局限在於後處理。
以下是較常見的 PostCSS Plugins:
- autoprefixer: 加入各家瀏覽器的前綴詞(prefix),例如:-webkit-、-moz-。
- stylelint: 語法檢查和報錯。
- postcss-preset-env: 將先進的功能轉為目前主流瀏覽器所能支援的語法。(類似 Babel)
- postcss-nested: 提供 CSS Nesting 功能。
- cssnano: 在不改變 CSS 的效果為前提下,對 CSS 檔案做縮減及優化。
- Lost Grid: 讓系統支援 Grid System。(通過
calc()實現因此支援度很高)
優勢
- 有彈性、好擴充,因為是以 Plugin 的方式插入,未來若主流瀏覽器支援了這些功能,要拔除特定 plugin 是很容易的。
- 更輕量,不像 Sass 可能預先綁了許多可能用不到的功能。
- 速度快。由於 PostCSS 的功能由所掛的 Plugin 數量而定,體積小,因此轉換的速度幾乎比 Sass 快三倍。
- 相對 CSS Preprocessor,更容易撰寫自己所想要的功能,因為使用 PostCSS 是可以自建 Plugin 而不是修改 Library。
Vue 中 PostCSS 的應用
- Vue CLI 中就有使用到上方所提的 autoprefixer,來擴大專案的瀏覽器支援度 。
Vue中有一個非常實用的 Scoped CSS 功能,讓各個 Component 之間的 CSS 不會互相污染,而這項功能正是透過 PostCSS 的協助來完成的。