Skip to main content

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() 實現因此支援度很高)

優勢

  1. 有彈性、好擴充,因為是以 Plugin 的方式插入,未來若主流瀏覽器支援了這些功能,要拔除特定 plugin 是很容易的。
  2. 更輕量,不像 Sass 可能預先綁了許多可能用不到的功能。
  3. 速度快。由於 PostCSS 的功能由所掛的 Plugin 數量而定,體積小,因此轉換的速度幾乎比 Sass 快三倍。
  4. 相對 CSS Preprocessor,更容易撰寫自己所想要的功能,因為使用 PostCSS 是可以自建 Plugin 而不是修改 Library。

Vue 中 PostCSS 的應用

  1. Vue CLI 中就有使用到上方所提的 autoprefixer,來擴大專案的瀏覽器支援度 。
  2. Vue 中有一個非常實用的 Scoped CSS 功能,讓各個 Component 之間的 CSS 不會互相污染,而這項功能正是透過 PostCSS 的協助來完成的。