jd-opensource / jd-opensource/nutui
[FR]: upgrade and remove warn for Sass @import deprecated
- Dominant language
- Vue
- Stars
- 6.5k
- Forks
- 835
- PR merge metrics
- No merged PRs in 30d
Description
### NutUI 包名
@nutui/nutui-taro
### 这个功能解决了什么问题?
```
ModuleWarning: Module Warning (from ./node_modules/.pnpm/sass-loader@14.2.1_sass@1.89.2_webpack@5.99.9_@swc+core@1.3.96_/node_modules/sass-loader/dist/cjs.js):
Deprecation Warning on line 0, column 8 of file:///Users/uu/fe-taro-uu/src/components/FetchList/components/Horizontal.vue:0:8:
Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.
More info and automated migrator: https://sass-lang.com/d/import
0 | @import "@nutui/nutui-taro/dist/styles/variables.scss";
```
1. sassLoaderOption.sassOptions.silenceDeprecations: ['legacy-js-api', 'import'] 顶层配置 —— 写入后构建仍输出 1952 条 warnings。Taro 4 webpack5-runner 源码看起来读这个字段并 recursiveMerge 给
sass-loader,但实测不生效。可能是 webpack-merge 在 dev/prod 合并时把 Taro 的自定义顶层字段过滤掉了
2. post-merge 强制注入 —— 同样无效。怀疑要么 sass-loader 14 的 legacy JS API 路径忽略了 silenceDeprecations,要么 Taro 内部有第三方 chain mutation 把 sassOptions 改回去了
3. 降 sass 到 1.79.x(用户否决)
4. 改用 sass-migrator 把项目 @import 全部迁到 @use —— 不彻底,因为 NutUI 4.3.x 自身的 variables.scss / mixins/index.scss 也用 @import,改不了源码
后续这个 warning 会自然消失的条件(任一)
- NutUI 升级(预计 4.4 / 5.x)把内部 @import 全部迁到 @use
- Taro 4 升级 webpack5-runner 切换 sass-loader 到 modern API,或加官方的 silence 配置入口
- Dart Sass 3.0 发布前(还有几个月到 1 年),NutUI 一定会被迫迁移
### 你期望的组件设计是怎样的?
做相关升级, 去掉warning
Contributor guide
Assessment
This issue has not been assessed yet.