从 HBuilderX 4.56+ ,vue2 项目也将默认使用 dart-sass 预编译器。
vue2开发者sass预处理注意:
sass的预处理器,早年使用node-sass,也就是vue2最初默认的编译器。
sass官方推出了dart-sass来替代。node-sass已经停维很久了。
另外node-sass不支持arm cpu,也即Apple的M系列CPU,导致HBuilderX的arm版只能使用dart-sass。
node-sass有些淘汰的写法,在dart-sass里已不再支持。
所以开发者在从vue2升vue3时,使用HBuilderX arm版时,会发现老的vue2项目如果写了废弃scss语法,会编译报错。
DCloud推荐开发者尽快升级到vue3,改用dart-sass。
vue3默认使用的是dart-sass。
解决方案1:
调整为dart-sass支持的语法。文档里提到要把/deep/换成::v-deep。那应该直接替换就行了吧。比如原来的写法是
// 修改前
/deep/ .uni-card__content {
padding: 0;
}
// 修改后
::v-deep .uni-card__content {
padding: 0;
}
解决方案2:
如果您希望继续使用node-sass,您可以在 manifest.json 中配置 "sassImplementationName": "node-sass",