背景说明

  此次改动是在 Sass 核心团队进行了大量讨论之后,得出的结论,现在是时候正式宣布弃用 LibSass 和基于它构建的包(包括 Node Sass)。多年来,LibSass 显然没有足够的工程带宽来跟上 Sass 语言的最新发展 (例如,最近的语言特性是在 2018 年 11 月添加的)。尽管我们非常希望看到这种情况有所改善,但即使 LibSass 长期贡献者 Michael Mifsud 和 Marcel Greter 的出色工作也无法跟上 CSS 和 Sass 语言开发的快速步伐。
主要包括以下四点说明:

  1、不再建议将 LibSass 用于新的 Sass 项目, 改为使用 Dart Sass。 建议所有现有的 LibSass用户制定计划,最终迁移到 Dart Sass,并且所有 Sass 库都制定计划 最终放弃对 LibSass 的支持。 不再计划向LibSass 添加任何新功能,包括与新 CSS 功能的兼容性。LibSass 和 Node Sass将在尽力而为的基础上无限期维护,包括修复主要的错误和安全问题以及与最新的 Node 版本兼容。 为什么弃用?
  2、几年来,Sass 一直处于一种模棱两可的状态,LibSass 在理论上是官方支持实现,但实际上从它的功能表现来看是静止的。
随着时间的流逝,越来越清楚感受到这种状态对 Sass 用户已经造成了切实的问题。 例如,经常让用户感到困惑,为什么原生 CSS 的min() 和 max() 无法正常工作,可能会认为 Sass 整体存在问题,但是实际上是因为 LibSass 不支持该功能。
  3、官方支持的 LibSass 不仅会给个别用户带来痛苦,由于 LibSass 不支持去年启动的 Sass 模块系统,主要相关的 Sass库由于担心其下游用户不兼容而无法使用它, 明确指出所有 Sass 用户应该放弃使用 LibSass,我们希望使这些 library的作者能够更加切实地使用更多现代的功能特性。
  4、LibSass 甚至抑制了 Sass 语言本身的发展。 我们无法继续推进有关 treating / as a separator的提议,因为他们编写的任何代码都会在 Dart Sass 中产生弃用警告或无法在 LibSass 中编译。 通过将 LibSass标记为已弃用,情况会变得更好,并且 Sass 在支持最新版本的 CSS 方面会变得更好。

"弃用"意味着什么?

我们之所以选择使用"弃用"一词,是因为它在编程社区中具有很大的分量,并强烈表明用户应该开始计划放弃 LibSass。 但是,这并不意味着该项目已经完全死了。 LibSass 和 Node Sass 的首席维护者 Michael Mifsud 确认他计划继续进行与过去几年相同级别的维护。 这意味着尽管将不再添加任何功能(并且这样 LibSass 会慢慢地逐渐偏离与最新 CSS 和 Sass 语法的兼容性 ),但将继续无限期地发布维护版本。

可移植性和性能呢
LibSass 与 DartSass 相比有两个主要优点:

可移植性:由于它是用 C++ 编写的,因此可以轻松地将 LibSass 嵌入其他编程语言中并提供原生(native-feeling) API。
性能:通过 C++ API 调用 LibSass 与使用脚本语言直接编写代码的速度相比非常快。 特别是,这意味着 LibSass 在 JavaScript 中比 Dart Sass 编译为 JS 的库速度要快得多(尽管它可与 Dart Sass的命令行可执行文件相媲美)。 我们正在使用 Sass 嵌入式协议来解决这两个问题,该协议将 Sass
编译器作为子进程运行,可以通过消息传递与任何主机语言进行通信。 嵌入式协议支持本地 Sass API 的所有功能,包括定义自定义导入程序和Sass 函数的能力,同时还提供高性能的 CLI 应用程序。 Dart Sass 已经实现了嵌入式协议的编译器端,并且正在积极开发
JavaScript 端。
Dart Sass

Dart Sass 可以编译为纯 JavaScript 编写的 sass 软件包上传到 npm 。 纯 JS版本比独立的可执行文件慢,但易于集成到现有工作流程中,并且允许你在 JavaScript 中定义自定义函数和导入器。当通过 npm 安装时,Dart Sass 目标是实现一个与 Node Sass 兼容的 JavaScript API库。完全兼容还在开发中,但是 Dart Sass 目前支持 render() 和 renderSync()函数。但是请注意,在默认情况下,由于异步回调的开销,renderSync() 的速度是 render() 的两倍以上。
————————————————
版权声明:本文为CSDN博主「前端菜鸡日常」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:node-sass弃用背景

其他链接:

1、node-sass

2、替换node-sass为dart-sass

3、Sass dart-sass 与 node-sass 的区别与选择

4、node-sass与其所支持的Node的版本的关系

5、web开发中webpack常用的sass-loader、node-sass、style-loader等区别作用

6、node-sass安装太难,替换为dart-sass

Warning: LibSass and Node Sass are deprecated. While they will continue to receive maintenance releases indefinitely, there are no plans to add additional features or compatibility with any new CSS or Sass features. Projects that still use it should move onto Dart Sass.

是时候弃用ibSass和node-sass而采用Dart Sass了!的更多相关文章

  1. Using / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0.

    Scss/Sass 项目里使用 / 报错:Using / for division outside of calc() is deprecated and will be removed in Dar ...

  2. Sublime Text 3编译Sass - Sublime Text安装Sass插件

    1.首先要安装sass,安装流程: http://www.w3cplus.com/sassguide/install.html 2.sublime text安装Package Control(已经安装 ...

  3. sass学习--什么是sass

    1.预备知识--什么是 CSS 预处理器 CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这 ...

  4. Sass简介,安装环境,Sass的语法格式及编译调试

    什么是 CSS 预处理器? 定义:CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进 ...

  5. 认识sass和webstrom的sass配置

    认识sass和webstrom的sass配置 我纳闷啊!电脑死机,我刚才编写的内容全没了. 呵呵! 一.sass的使用 1.首先要到官网下载个稳定的ruby版本,因为sass运行是需要ruby环境 它 ...

  6. vue -- 使用sass并引入公共sass文件

    sass可以提高我们的开发效率,怎么在vue的项目中使用sass并且可以设置一些公共的文件呢? 使用sass 1.安装sass的依赖包 npm install --save-dev sass-load ...

  7. sass安装:webpack sass编译失败,node-sass安装失败的终极解决方

    文章来源:sass安装:webpack sass编译失败,node-sass安装失败的终极解决方 sass难言之隐-sass安装的坑 之前花了很多时间折腾node-sass,发现sass老是安装不上 ...

  8. DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0

    DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0. 问题解决 ...

  9. sass调试--页面看到sass文件而不是css文件问题

    在浏览器页面有时看到sass文件而不是css文件问题,其主要由于sass开启了source-map(调试)功能,问题如下图: sass调试 sass调试需要开启编译时输出调试信息和浏览器调试功能,两者 ...

  10. Sass 入门 (一) 安装Sass

    Sass安装 ruby安装 因为sass依赖于ruby环境,所以装sass之前先确认装了ruby.先导官网下载个ruby 在安装的时候,请勾选Add Ruby executables to your ...

随机推荐

  1. 游戏推荐业务中基于 sentinel 的动态限流实践

    作者:来自 vivo 互联网服务器团队- Gao Meng 本文介绍了一种基于 sentinel 进行二次开发的动态限流解决方案,包括什么是动态限流.为什么需要引入动态限流.以及动态限流的实现原理. ...

  2. KubeSphere 社区双周报|2024.06.21-07.04

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  3. RocketMQ 在小米的多场景灾备实践案例

    本文作者:邓志文.王帆 01为什么要容灾? 在小米内部,我们使用 RocketMQ 来为各种在线业务提供消息队列服务,比如商城订单.短信通知甚至用来收集 IoT 设备的上报数据,可以说 RocketM ...

  4. Antlr4 语法解析生成器(上)

    简介 Spark SQL.Presto --> Antlr4 SQL 解析器 Flink SQL --> Apache Calcite(通过JavaCC 实现) Spark SQL如何进行 ...

  5. 2.12 Linux两种远程管理工具(PuTTY和SecureCRT)

    通过<Linux远程管理协议>一节可以知道,Linux远程管理服务器多基于 SSH 协议.本节给大家介绍 2 种常见的基于 SSH 协议的远程管理工具,分别是 PuTTY 和 Secure ...

  6. Lattice、Xilinx FPGA reg初始化赋值问题

    一.起因 最近在开发Lattice的一款低功耗FPGA时,遇到了reg初始化复位问题,经过在网上搜寻相关资料整理如下: 二.FPGA中reg的初始化方式 在定义时初始化,例如: reg r_test ...

  7. Cursor使用

    Cursor是一款AI 代码编辑器,官网地址为https://www.cursor.com/,直接在官网下载安装即可,基于VS Code二次开发而来,之所以没有采用插件方式,在官方网站上给出的答案是某 ...

  8. VLAN技术

    VLAN是虚拟局域网的缩写,它是一种将网络设备(如交换机.路由器等)分割成多个虚拟网络的技术.每个VLAN都是一个独立的广播域,使得可以在同一物理网络上创建多个逻辑网络,从而提高网络的安全性和灵活性. ...

  9. equals与”==”的区别

    本文由 ImportNew - 刘志军 翻译自 Javarevisited.如需转载本文,请先参见文章末尾处的转载要求. equals()和"=="操作用于对象的比较,检查俩对象的 ...

  10. JAVA 注解示例 详解

    注解(Annotation) 为我们在代码中天界信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据). 注解的语法比较简单,除了@符号的使用以外, ...