node-sass 是属于被淘汰的工具,然而很多老项目还在继续使用它,新人拿到项目第一步当然是要 npm install, 这时候node-sass 经常安装不成功,因为默认npm会到 github下载node-sass ,比如直接安装时

Cannot download "https://github.com/sass/node-sass/releases/download/v4.14.1/darwin-x64-83_binding.node"

那么国内有没有node-sass的缓存呢?当然有,而且就是我们常用的淘宝镜像就有。新版淘宝CDN域名是 npmmirror.com,后面我都会使用这个域名

注意,这里不是 --registry, 下载node-sass 静态文件是单独的域名,跟是否配置 --registry 为淘宝镜像无关。

npm config set sass_binary_site="https://cdn.npmmirror.com/binaries/node-sass

设置之后,重新运行 npm i , node-sass 就会从这个地址下载。如果你的网络状况比较好,那么现在应该已经成功了。

网上有其他人使用的配置, sass_binary_site 是大写, 但是我测试成功的是小写,可能是npm版本不同导致。

我的环境:

npm --version
6.14.15
node --version
v14.18.3

然而我的事情并没有完。我运行 npm i 的时候,它居然无法下载 darwin-x64-83_binding.node !
幸运的是我能通过浏览器下载。下载下来,我需要把这个文件存到本地缓存,npm 本身有缓存机制,具体缓存在哪个目录,需要查询。命令行输入:

cnpm config ls -l |grep cache

从命令行输出结果,就能找到当前npm 使用的 cache 目录,比如我这里是 ~/.npm/.cache/cnpm
也可以用其他方法获知 cnpm 的缓存路径,比如我的 cnpm 其实是一个 bash 别名:

which cnpm 
cnpm: aliased to /usr/local/bin/npm --registry=https://registry.npmmirror.com --cache=~/.npm/.cache/cnpm --disturl=https://npmmirror.com/dist --userconfig=~/.cnpmrc

其中的 --cache=path , 这里指向一个具体的目录,那么我把 darwin-x64-83_binding.node 拷贝到缓存目录中,拷贝后的结果:

pwd
~/.npm/.cache/cnpm/node-sass/4.14.1
ls
darwin-x64-83_binding.node

文件大小大约 3.2 MB
再次执行 cnpm i
命令行输出中,有如下提示:
Cached binary found at **/.npm/.cache/cnpm/node-sass/4.12.0/darwin-x64-83_binding.node
以上代码中, ~ 表示用户主目录。其实操作系统显示的是 /Users/用户名/, 这里我用 ~ 隐去。

以上操作都在 mac 电脑中执行,在 linux, windows 电脑中,本质是一样的,只是对应的 .node 文件名不一样。

如果你的网络无法下载 darwin-x64-83_binding.node 怎么办呢?那就从其他渠道获取吧,比如从其他人已经安装好的环境里面,进入 node_modules/node-sass/vendor 目录拷贝到这个文件,然后根据规则,重命名之后放到 cache 目录内。注意你是mac就得从别的mac电脑里面拷贝,如果是windows, 就从别人的 windows电脑拷贝

Logo

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

更多推荐