可行,但需满足三个条件:安装 sass 并移除 node-sass;vite.config.ts 中用 additionaldata 配合 @use "@/styles/variables.scss" as *;;所有 标签必须声明 lang="scss"。

能直接在所有 <style lang="scss"></style> 中用 $xxx,不用每次 @use 或 @import —— 这是可行的,但必须满足两个硬条件:Vite 配置正确 + 使用 @use ... as * 语法,且路径无误。
依赖必须装 sass,不是 node-sass
旧项目可能残留 node-sass,它已废弃,和 Vite 5+、Vue 3.4+ 兼容性差,编译会静默失败或报 Undefined variable。装错会导致变量“看起来写了,实际不生效”。
-
pnpm add sass -D(推荐)或npm install sass --save-dev - 删掉
node-sass:pnpm remove node-sass - 检查
package.json中只有"sass",没有"node-sass"
vite.config.ts 里必须用 additionalData + @use ... as *
additionalData 是唯一能让变量“自动注入每个 SCSS 上下文”的机制;@use ... as * 才能把变量平铺到全局作用域,否则要用 file.$var 形式(比如 variables.$primary),不符合“直接用 $primary”的需求。
递归分析 Vue 项目组件依赖,从入口文件生成组件层级图,支持 Vue 2/3,输出组件名、文件路径和属性。适用于分析组件结构、排查依赖或了解项目架构。
- 路径必须能被 Vite 解析:确保
@/styles/variables.scss真实存在,且alias已正确定义(通常@指向src) - 写法必须是反引号包裹的字符串:
additionalData: `@use "@/styles/variables.scss" as *;` - 不能写成
@import—— Vue 3.4+ + Sass 2.0+ 默认禁用@import,会警告并忽略 - 改完配置必须重启开发服务器,热更新不触发
additionalData重载
组件内使用时,<style></style> 标签必须声明 lang="scss"
只写 <style scoped></style> 默认是 CSS,SCSS 语法(包括变量)会被当成无效 CSS 忽略,浏览器控制台不会报错,但样式不生效 —— 这是最隐蔽的坑。
- 正确写法:
<style scoped lang="scss"></style> - 变量直接用:
color: $primary-color;,不需要前缀、不需要再@use - 如果用了
scoped,变量仍可用 ——additionalData注入的是预处理器上下文,与作用域无关
真正容易卡住的地方就三个:装了 node-sass 却没删干净、vite.config.ts 里路径拼错(比如少个 s 或斜杠方向反了)、<style></style> 忘了加 lang="scss"。这三处全对了,$xxx 就真的能在任意组件里随手写了。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










