文章目录
- 需求
- 我上网都查到了哪些信息
- 在 github 看到了 node-sass 依赖的最新版本的列表:
- 关于方案2的失败
- 不同版本的 nodejs 和 node-sass依赖的**适配关系**
- 从何得知替代方案——`dart-sass`
- 如何安装 dart sass?
需求
在做一个基于Node、React的前端项目,通过npm管理依赖包。
通过依赖风险扫描,有一个依赖包node-sass@4.14.1
有风险代码,推荐升级到8.0.0
下面是我的尝试:
node-sass@4.14.1
-->node-sass@8.0.0
需要python2环境,可我在公司的电脑里并没有权限自己安装python。node-sass@4.14.1
-->node-sass@5.0.0
安装成功但运行时报错:node-sass 5和4不兼容
- 直接删除该依赖
npm uninstall node-sass
安装成功但运行时报错。毕竟项目里还是用到了sass相关的语法转换的。 - 最终方案:找一个替代品
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
: