当前位置: 首页 > news >正文

node-sass@4.14.1 包含风险, 如何升级依赖至 dart-sass

文章目录

    • 需求
    • 我上网都查到了哪些信息
      • 在 github 看到了 node-sass 依赖的最新版本的列表:
      • 关于方案2的失败
      • 不同版本的 nodejs 和 node-sass依赖的**适配关系**
      • 从何得知替代方案——`dart-sass`
      • 如何安装 dart sass?

需求

在做一个基于Node、React的前端项目,通过npm管理依赖包。
通过依赖风险扫描,有一个依赖包node-sass@4.14.1有风险代码,推荐升级到8.0.0

下面是我的尝试:

  1. node-sass@4.14.1 --> node-sass@8.0.0 需要python2环境,可我在公司的电脑里并没有权限自己安装python。
  2. node-sass@4.14.1 --> node-sass@5.0.0 安装成功但运行时报错:node-sass 5和4不兼容
  3. 直接删除该依赖 npm uninstall node-sass 安装成功但运行时报错。毕竟项目里还是用到了sass相关的语法转换的。
  4. 最终方案:找一个替代品dart-sass。即:删除依赖node-sass,安装依赖sass (dart-sass 已更名为 sass)

我上网都查到了哪些信息

在 github 看到了 node-sass 依赖的最新版本的列表:

在这里插入图片描述

关于方案2的失败

有人在我之前遇到过相同的问题: https://blog.csdn.net/qq_42423991/article/details/109448034
他的解决方案是把版本还原。
可是我的任务就是把 node-sass@4.14.1 这个有风险的依赖版本给撤下去。
所以,这一条不能帮我解决最终的问题,不过可以堵死一条路的可能性。

在这里插入图片描述

不同版本的 nodejs 和 node-sass依赖的适配关系

依旧是在github看到。
这里的不适配也造成了前面提到的方案1 & 2 的失败:
我用了本地macOS机器和远程连接的windows环境安装测试,其中的 nodejs 版本是不同的,报错结果也有区别。
我的选择是看公司的部署系统里用什么版本的 node 和 npm ,然后在本地也用接近的版本去测试(尽量减小环境上的变量影响)。

在这里插入图片描述

从何得知替代方案——dart-sass

github 项目 homepage:
在这里插入图片描述
警告:
Libsass 和 node-sass 已被弃用
尽管工作人员会继续无限期地接收到维护的release,但不会有时间安排来为新的css和sass细节而新增功能或解决兼容性问题。
至于那些依旧用到了本依赖的项目,你们要做的事就是:迁移到 dart sass

如何安装 dart sass?

先把 node-sass 卸载了 npm uninstall node-sass

然后再安装新的。
直接说结论: 用npm install sass 而不是 npm install dart-sass

从 node-sass 转到 dart-sass ,这时后来者替代了前者。可以看到两者的名字也是相同的规格。
之后:往后对于sass语法的支持,就由我dart-sass这个后来者一家撑着。那我直接改名(转正),就叫sass,名称更短,听起来也更官方(提供对sass语法支持的插件,插件名就叫sass,这多官方啊)。

在这里插入图片描述
另外,从dart-sass官网也可以看到安装命令里要安装的包名是sass而非dart-sass

在这里插入图片描述

http://www.lryc.cn/news/11421.html

相关文章:

  • DataWhale 大数据处理技术组队学习task2
  • 一文读懂select、poll、epoll的用法
  • 《C陷阱与缺陷》----词法“陷阱”
  • 千锋教育+计算机四级网络-计算机网络学习-04
  • 蓝桥杯算法训练合集十四 1.P08052.P07053.同余方程4.P08015.ascii应用
  • 判断字符串中的字符的类型isdecimal();isalpha();isdigit();isalnum()
  • VSCode远程调试Linux代码,python解释器配置
  • 03:入门篇 - CTK Plugin Framework 基本原理
  • 面试攻略,Java 基础面试 100 问(九)
  • JavaScript 代码不嵌套主义
  • 使用默认参数的4大要点
  • Linux文件系统中的硬链接及常见面试题
  • opencv-StereoBM算法
  • 图像分类竞赛进阶技能:OpenAI-CLIP使用范例
  • Metasploit框架基础(一)
  • pytorch零基础实现语义分割项目(二)——标签转换与数据加载
  • python(8.5)--列表习题
  • rt-thread pwm 多通道
  • C语言练习 | 初学者经典练习汇总
  • 华为OD机试 - 自动曝光(Python) | 机试题算法思路 【2023】
  • 「6」线性代数(期末复习)
  • 1.1 硬件与micropython固件烧录及自编译固件
  • 【MySQL进阶】视图 存储过程 触发器
  • [Linux篇] Linux常见命令和权限
  • 29岁从事功能测试被辞,面试2个月都找不到工作吗?
  • 【C#个人错题笔记1】
  • 基于lambda的mongodb查询插件
  • 基于微信小程序的微信社团小程序
  • GEE学习笔记 七十三:【GEE之Python版教程七】静态展示影像和动态展示影像
  • PGLBox全面解决图训练速度、成本、稳定性、复杂算法四大问题!