记一次Sass1.79.0+版本的升级

839 阅读2分钟

Sass真是一个让人又爱又恨的玩意。在远古时代,Sass解决了CSS的诸多不便,同时它也带来了node-sass这个万恶之源(当然基本上都是element-ui带来的)。而现在进化到dart sass后也是天天给人找事。

开端

事情开始于半个月前的项目日常依赖升级,升级完后项目启动后出现大量警告,因为使用的是update所以基本上不会有大版本变更的依赖更新,所以据我经验又是sass这个依赖在搞事,估计是要弃用啥。

果不其然,sass版本更新到了1.79.1,查看文档这个版本对颜色及其函数进行了更改,弃用了一堆,替换成channel函数,同时弃用了旧版JS Api。好的,找到原因了,开干。

旧版API弃用

虽然可以使用quietDeps: true将所有警告静默,不过这只是掩耳盗铃。根据官方文档,要将打包工具中的sass选项指定API为modernmodern-compiler,注意这里有一点,后面那个对应的依赖不是sass而是使用二进制编译器的sass-embedded。我的项目里用的是vite,而vite官方文档中早就贴心地搞好了,webpack项目就得看对应文档说明了。

// https://cn.vitejs.dev/config/shared-options#css-preprocessoroptions
export default defineConfig({
  css: {
    preprocessorOptions: {
      scss: {
        api: 'modern-compiler', // 或 "modern","legacy"
      },
    },
  },
})

颜色方法弃用

一般来说大家用sass都不会用太深,所以这些事大部分情况都是面向UI框架作者的。Element-Plus就是其中一个,我第一时间发了Issue,有人也第一时间提交了PR,结果没想到Sass的新颜色方法是得升级版本才能用,然后那个PR一挂就是半个月,我受不了了,向Element-Plus提交了第一份PR,今天刚合并。github.com/element-plu…

image.png

好了,等发版就行了。