今天做项目的时候偶然发现一个这样的问题,当时就表示特别疑惑,都是vue2的老项目为什么同样的样式,粘过来就会报sass的错误呢?后来一想sass也不是第一次出问题就突然释怀了。别人家的插件库是不管如何升级都会保留之前的用法和api以免用户和开发人员在升级新版的时候代码报错,导致无法排查。但是sass是个另类!
根据vscode的提示去了sass官网看到了新版本的sass/scss 已经不在支持 /deep/ 和 >>>这两种深度选择器的方法。
这里普及一下vue项目中常用的深度选择器。deep 和 >>> 再过往的运用中经常使用的可能会发现,有极少情况的时候deep找不到的深度,>>>是可以找到的。但是在最新版本的/deep/ 和 >>>双双被废弃!
这里要注重解释一点,看了网上很多大神的帖子说/deep/ 和 >>>实在vue3被弃用的。我觉得这个说法是有歧义的,应该不是在vue3.0被弃用。而是因为vue3.0引用了更高版本的sass,sass-loader,node-sass的原因(这波vue3.0不背锅)也希望后续sass能够合理正常的更细你自己的保本保留之前的方法和api。
废话不多说接下来上解决方案:
解决的方式是全部替换 /deep/ 和 >>> 替换成 ::v-deep 如下图所示。