@import在dart sass 1.80+中触发警告,因其被官方标记为deprecated,底层文本拼接机制导致变量静默覆盖、重复解析、全局污染,且vite、angular cli等构建工具已联动启用严格模式,警告将升级为错误;必须改用@use/@forward实现模块化隔离。

@import 在 Dart Sass 1.80+ 中触发警告,不是因为“写法不优雅”,而是编译器已将其标记为 deprecated —— 它的底层机制与现代模块化开发根本冲突,警告是迁移倒计时的第一声警报。
为什么 1.80 版本突然开始报这个警告
Dart Sass 从 1.80 开始正式启用弃用机制,把 @import 列入移除路线图。这不是临时策略,而是语言设计层面的转向:Sass 团队决定彻底放弃“文本拼接式导入”,改用有作用域、可追踪、可复用的模块系统(@use/@forward)。你看到的警告,是编译器在说:“这行代码还能跑,但下一 minor 版就可能直接报错。”
@import 警告背后的真实问题不止是“过时”
- 变量静默覆盖:
$spacing在_vars.scss和_theme.scss里都定义了?谁后@import谁赢,DevTools 查不到来源 - 重复解析:同一个
@import "mixins"出现在 5 个组件文件里 → Sass 解析它 5 次,热更新变慢、CSS 体积膨胀 - 全局污染:所有
@import进来的变量/mixin/function 全塞进一个命名空间,冲突风险随项目规模指数上升 - 构建工具联动:Vite 4.5+、Angular CLI 17+ 默认启用
strictSassImports: true,警告秒变Error: Invalid CSS after "@import"
@use 替换 @import 的硬性规则和常见翻车点
@use 不是语法糖,是强制约束:
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
- 必须是 SCSS 文件中第一个非注释、非空行;写在
@media或选择器内部?直接编译失败 - 路径不带扩展名、不带下划线:
@use "src/styles/variables"✅,@use "src/styles/_variables.scss"❌ - 访问变量必须加命名空间:
@use "variables" as v;→ 用v.$primary-color,不能直接写$primary-color -
@use "variables" as *;只能用于过渡期,生产环境禁止——它等于重开全局污染闸门 - 调用内置函数(如
lighten())也得先@use "sass:color",再写color.lighten($c, 10%)
第三方库(比如 uview-plus)里的 @import 怎么办
你改不了 node_modules/uview-plus/libs/css/components.scss 里的 @import,这是现实。此时:
- 降级 Dart Sass 到
1.79.6是权宜之计,但锁版本会卡住其他依赖升级,且 2026 年底后连兼容模式都没了 - 等库更新?uview-plus 等主流 UI 库已在 2026 年上半年陆续发布支持
@use的新版,检查其 GitHub release note 或 npm version - 临时 patch:用
patch-package改第三方库的 SCSS 文件,把@import换成@use+@forward,但需持续维护 patch
真正棘手的从来不是怎么替换一行代码,而是变量命名空间断裂后,原来散落在各处的 $color-primary 突然全变 undefined —— 那些没被 @use 加载的文件,根本看不到别人导出的东西。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










