Files
goauto/web/SASS_UPGRADE_NOTE.md
T

2.0 KiB
Raw Blame History

Sass Legacy API 废弃警告处理说明

问题描述

编译时出现警告:

Deprecation Warning [legacy-js-api]: The legacy JS API is deprecated 
and will be removed in Dart Sass 2.0.0.

原因

  • 项目当前使用 sass-loader: ^13.3.3 + sass: ^1.91.0
  • sass-loader 13.x 默认仍走 Dart Sass 的 legacy JS API(从 14.x 起才默认使用 modern API)
  • Dart Sass 2.0 将移除此 API

解决方案

🎯 方案1:环境变量静默(已实施)✅

在 .env.development 和 .env.production 中添加:

SASS_SILENCE_DEPRECATIONS = 'legacy-js-api'

Dart Sass 会自动读取此环境变量并静默对应警告。

优点:

  • ✅ 不需要重装依赖
  • ✅ 不修改 webpack 配置
  • ✅ 立即生效
  • ✅ 官方推荐方式

缺点:

  • ⚠️ 只是隐藏警告,未来 Dart Sass 2.0 可能不兼容

🚀 方案2:切换到 modern API(推荐长期方案)

升级 sass-loader 到 14+,默认使用 Dart Sass 的 modern API:

pnpm add -D sass-loader@^14.2.1

或在当前 13.x 下于 vue.config.js 中显式指定:

css: {
  loaderOptions: {
    sass: { api: 'modern' }
  }
}

两种方式生效后即可移除环境变量配置。

优点:

  • ✅ 彻底解决问题
  • ✅ 面向未来兼容

缺点:

  • ⚠️ 可能需要调整配置
  • ⚠️ 需要重新安装依赖

当前状态

✅ 已采用方案1,通过环境变量静默警告。

sass-loader 虽已是 13.3.3,但仍走 legacy API,因此静默配置目前仍然必要。 建议在未来 Vue 3 稳定后,按方案2 切换到 modern API 并移除该环境变量。


验证

重启开发服务器后,编译过程中不再显示该警告:

# 需要完全重启,而不是热重载
npm run dev

参考