sass1.8.0中 @import Deprecation Warning解决办法

sass 1.8.0后 将不再支持 @import 需要使用 `@use’
官方文档

1、Sass @import rules are deprecated and will be removed in Dart Sass
3.0.0

  • 修改方法:
@use "@/variables.scss";

2、Deprecation Warning: Global built-in functions are deprecated and will be removed in Dart Sass 3.0.0.;
Deprecation Warning: The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0.
sass 1.80 不再支持全局内置函数、老的 js api 接口

  • 修改方法 vue.config.js:
export default defineConfig({
  ...
  css: {
    preprocessorOptions: {
      scss: {
        api: 'modern-compiler', // 修改api调用方式
      },
    },
  },
  ...
});

3. Internal server error: [sass] Undefined variable.

sass 1.80 全局变量和 mixin 需要手动导出

  • 修改方法 vue.config.js:
export default defineConfig({
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: `@use "@/assets/global.scss" as *;`,
      },
    },
  },
});

解决~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

### 解决方案 为了消除 `Sass @import` 规则废弃警告,在 Dart Sass 中推荐使用 `@use` 和 `@forward` 来代替传统的 `@import`[^1]。 #### 使用 `@use` `@use` 是一种更安全的方式引入其他文件中的变量、函数和混合宏。通过这种方式可以更好地管理模块化样式表并减少命名冲突的风险。下面是一个简单的例子来展示如何应用这一新特性: ```scss // _variables.scss 文件内容如下: $primary-color: #4CAF50; $body-font-family: 'Roboto', sans-serif; // main.scss 文件中替换旧版写法为新版写法: //@import "variables"; // 废弃语法 @use "variables"; // 推荐的新语法 ``` 当使用 `@use` 导入时,默认情况下只能访问被导入文件里的公共成员(即未加下划线开头的名字)。如果想要暴露更多内部细节给外部调用者,则需要用到另一个指令——`@forward`[^2]。 #### 使用 `@forward` 对于那些希望重新导出整个库或部分功能而不改变其路径结构的情况来说,`@forward` 提供了一个很好的解决方案。它允许开发者创建一层抽象层,从而简化依赖关系的同时也保持了灵活性。 假设有一个名为 `_themes.scss` 的主题配置文件,其中包含了多个颜色定义和其他辅助工具类;现在希望通过一个新的入口点统一管理和分发这些资源,那么就可以这样做: ```scss // themes/_index.scss 内容如下所示: @forward "colors"; @forward "mixins"; // colors.scss 及 mixins.scss 各自实现具体的功能... ``` 这样做的好处在于即使将来需要调整底层实现方式也不会影响到上层使用者,只要确保接口一致即可[^3]。 #### 更新现有项目 针对已经存在的大型项目而言,一次性全部转换成新的加载机制可能会比较困难。因此建议逐步迁移:先从新增代码开始采用最新标准编写;而对于遗留下来的旧有部分,则可以在适当时候再考虑重构升级[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值