圖解PostCSS的插件執行順序
文章其實是一系列的早就寫完了. 才發現忘了發在SegmentFault上面, 最早發布于https://gitee.com/janking/Inf...
這次我繼續研究PostCSS的插件的執行順序。
之前有研究過做過假設,在插件列表中,PostCSS的插件執行順序自上而下,一切看起來似乎是沒有任何問題的。
我也看過有關PostCSS解析器的相關文章,有以下一些收獲:
摘自:PostCSS 是個什么鬼東西?
當然這張圖并沒有對Plugin System進行解釋。
再有:
摘自:深入PostCSS Web設計
摘自:寫CSS的姿勢
這兩張圖則應該是說明了我之前的假設,插件中的執行順序自上而下。
但是這些資料不明不白的,我決定進一步閱讀相關文章找出真相,不過研究過程中,我也依然深思這樣一個問題,也許我本不應該糾結這個,因為或許根本沒有意義?或者這個工作方式并非與PostCSS本身有關?
于是我又把之前收集的PostCSS的文章翻了一遍,我們再來一個個過一遍。
POSTCSS PLUGIN INSTALLATION EXAMPLE
先來看看一片來自smashingmagazine的這段POSTCSS PLUGIN INSTALLATION EXAMPLE
In the array, we can include the necessary require
statements that return the plugins and that are then called immediately. If you would like to read more about this concept, look through “Functions as First-Class Citizens in JavaScript” by Ryan Christiani.
會不會跟這個有關呢,我先埋個伏筆。
PostCSS Quickstart Guide: Exploring Pluginsd
再來看看另一篇PostCSS Quickstart Guide: Exploring Pluginsd的Plugin Execution Sequence中這段
One of the main considerations you have to make when loading up the array of PostCSS plugins is the order in which you run them. You’ll have to pause and think through your list, determining if one plugin might need to run after another in order to do what you want it to.
鄙人譯:有一個非常重要的需要考慮的一點是,當你在加載PostCSS插件數組中順序就是你執行他們的順序。因此你有必要好好在這個插件列表這下功夫思考一下,來確定你想要的一個接一個的插件執行順序。
原文第一句話很復雜,所以英語不好的理解起來可能有些費勁,姑且可以分成以下幾段分別翻譯再合并One of the main considerations you have to make when loading up the array of PostCSS plugins is the order in which you run them.
然后這段原文后也有示例,大家可以自己看看加深理解和認識。并且也有一個小結論:
The load order for plugins is something that will change with each set of plugins, so you may find you just need to do a little experimentation sometimes to get everything working together nicely.
鄙人譯:你所設置的每個插件都會被加載的插件順序所影響,因此強烈建議你在某些情況下多做些測試來讓你的插件們運行的更加完美~
好了看到這里,其實答案大致已經揭曉,也許你覺得這不是很自然的從上而下么,為何作者要糾結這么久還寫了這么一篇長篇大論的文章。如果你還沒看過之前我為何糾結這個順序問題,可以看看:
- PostCSS自學筆記(二)【插件篇】#CSSNANO
- PostCSS自學筆記(二)【番外篇一】
結論
其實,關于順序的疑問我覺得差不多就此打住,也許其中的確有些奇怪的現象,但是這個基本不影響或者說沒有追究其根本的意義,或許真要打破沙鍋問到底就要發郵件給PostCSS作者了。而作為普通開發人員,也許沒有必要花太多精力去研究這個,我們知道PostCSS插件的順序一般來說是從上往下執行的,不要犯低級的順序錯誤(例如import寫在列表末尾),大部分場景都會得到我們想要的結果了
(突然想起來了,前面埋了個伏筆其實跟它沒啥關系,所以不多做文章了~不過作為課外閱讀,多了解下也是棒棒噠!)
其他
關于我個人的PostCSS一系列學習, 介紹及總結, 有興趣可以參閱:
- PostCSS自學筆記(一)【安裝使用篇】
- PostCSS自學筆記(二)【插件篇】
- PostCSS自學筆記(二)【番外篇一】
- PostCSS自學筆記(二)【番外篇二】