Ryan Shang

生死看淡,不服就干

0%

node-sass安装问题记录

一、背景

最近新接手了一个老项目,在启动项目阶段遇到了安装node-sass依赖的问题,这里简单记录下解决方案。

二、执行npm install node-sass时发生了什么?

  1. 如果本地有缓存命中,则安装本地缓存
  2. npm 拉下 node-sass包
  3. 根据node版本,从github下载对应的binding.node编译器
  4. 如果下载编译器失败或github没有对应node版本的编译器资源则尝试本地编译
  5. 使用python2进行本地编译

三、常见问题

安装过程中,经常会安装失败,常见的问题有:

  1. 无法稳定的访问github导致下载binding.node资源失败,需要本地编译
  2. 本地使用的node版本没有对应的binding.node编译器,需要本地编译
  3. mac12.3之后默认移除了apple command-line-tools中的python2,导致本地编译的时候确实环境导致失败

四、解决方案

其实问题最主要的原因就是无法下载编译好的binding.node资源,所以解决这个问题的优先思路就是保证能下载到编译好的binding.node资源,尽可能不进行本地编译(过于耗时)。

解决步骤:

1. 使用镜像源

在项目中增加.npmrc,给node-sass的编译器配置镜像源,确保binding.node资源能够下载成功

1
sass_binary_site=http://cdn.npm.taobao.org/dist/node-sass

2. 使用特定node版本

根据项目中node-sass的版本,在github上找到对应的node版本,确保能从github/加速源下载到编译好的binding.node资源
具体版本可以参考:Node-Sass Node version support policy

这个只是面对老项目时,临时安装node-sass的解决方案,最终的解决方案,是使用dart-sass替换node-sass