node-sass 被放弃的原因主要涉及其底层实现、维护成本以及与 Sass 社区发展的一致性。下面详细解释这些因素:

1. 基于 LibSass 的实现

node-sass 是基于 LibSass(一个用 C++ 编写的 Sass 编译器)的绑定。虽然这种实现在性能上有优势,但 LibSass 的开发和更新速度跟不上 Sass 语言本身的发展。随着时间的推移,这种滞后性成为了一个问题,因为 LibSass 没能及时支持最新的 Sass 功能和语法。

2. 维护和更新困难

由于 LibSassnode-sass 都需要用 C++ 编写和维护,这对于大多数前端开发者而言是一个较高的门槛。这导致了这两个项目的维护和贡献变得更加困难,尤其是在处理跨平台兼容性问题时。每次 Node.js 发布新版本时,node-sass 都需要更新其二进制绑定,这是一个重复且耗时的过程。

3. 官方推荐 Dart Sass

Sass 官方开始推荐使用 Dart Sass(也就是 sass 包),它是用 Dart 语言编写的,旨在完全兼容 Sass 语法,并成为 Sass 的主要实现。Dart Sass 能够更快地支持新的 Sass 功能,并且更易于安装,因为它不依赖于平台特定的二进制文件,避免了 node-sass 那样频繁遇到的安装和编译问题。

4. 社区的转移

随着官方和社区的支持向 Dart Sass 转移,node-sassLibSass 的使用和贡献逐渐减少。最终,LibSassnode-sass 的维护者宣布停止对这两个项目的开发和维护。这标志着社区和工具链正式向 Dart Sass 迁移。

综上所述,node-sass 被放弃主要是由于其底层实现的限制、维护的复杂性以及 Sass 官方推荐更现代、更易于维护的 Dart Sass 实现。这一转变有利于统一 Sass 社区的工具链,确保开发者能够使用最新、最稳定的 Sass 功能。

作者:GPT3.5

GitHub 加速计划 / no / node-sass
8.5 K
1.33 K
下载
:rainbow: Node.js bindings to libsass
最近提交(Master分支:2 个月前 )
6081731a Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/setup-node dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> 9 个月前
62c0f46c Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> 9 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐