additionaldata不生效的根本原因是scss语法被破坏:末尾漏分号导致拼接错误、相对路径未解析、variables.scss含css规则、@use与@import混用,或未正确配置sass、别名、as *及纯模块要求。

不能“全局注入 CSS”,只能全局注入 SCSS 编译期变量($xxx)或混合器(@mixin);CSS 自定义属性(--xxx)必须靠 JS 或 :root 注入,和 SCSS 无关。
为什么 additionalData 不生效?
90% 的失败不是配置位置错,而是 SCSS 语法被破坏:
-
additionalData字符串末尾漏了分号(;),导致后续组件里的 SCSS 被拼到@use行末,直接报SyntaxError: expected ";" - 路径用了相对路径(如
"./src/styles/variables.scss"),但 Vite 的@别名还没加载,或配置顺序错了——css.preprocessorOptions.scss.additionalData必须写在resolve.alias之后 -
variables.scss里写了实际 CSS 规则(比如.btn { color: red; }),会被每个组件重复注入,且干扰变量导出 -
additionalData用@use,但variables.scss内部又用@import引其他文件,而那些文件没配@forward,符号根本没暴露
@use 和 @import 怎么选?
Vue 3 + Vite 默认用 Dart Sass,@use 是唯一推荐方式,但必须配合 as * 才能平铺使用:

