起因
心血来潮,想知道Vite是怎么使用additionalData的?在webpack中,是可以通过sass-loader的选项additionalData是实现的,但是vite没用到sass-loader,是怎么实现的呢?
过程
在vite仓库搜索preprocessorOptions
,可以发现结果中有一个packages/vite/src/node/plugins/css.ts
,那么可以肯定就是在这里处理了。搜索可找到如下代码:
图 0
可以知道preProcessors是持有scss
,less
处理方法的对象,按照这个搜索,可发现
图 1
图 2
通过sass显然是没有additionalData属性的,我们接下来继续找,从这里可以知道getSource
就是获取scss代码的,看一看getSource
函数
图 3
出现了additionalData ,如果additionalData是函数,会传入源码处理,如果是字符串,会将additionalData 拼接在前面。
由此就知道咋回事了。在处理完预处理器之后才会经过postcss处理。