1.sass起源
sass 最早是 2006 年由 ruby 开发的也叫ruby-sass,作为和它 web 框架的模版引擎 haml 配套的编写 css 的语言。后来,Node.js 的出现推动了前端工程化的发展,也就是用 Node.js 来写前端用的编译打包等工具链。而 Node.js 只支持 c++ 这种编译型语言的扩展包,ruby sass 就用不了了,所以出现了 node-sass。直到 2019 年 3 月,ruby sass 宣布不再维护,sass 最早的编译器退出历史舞台。node-sass 因为是一个 c++ 模块,所以安装的时候要和 node 版本对应,不然就会编译报错。
但是,node-sass 已经被标记为过时了,SASS 团队的两个主要维护者感觉自己支持 CSS 新特性的速度跟不上了,而且社区出现了 dart-sass 这个对 css 新特性支持更好的 sass 编译器,随着时间的推移,CSS 新特性支持上差距越来越大。最终,在 2020 年 10 月份,node-sass 宣布了不再继续支持新特性,标记为了过时,推荐使用 dart-sass。dart-sass 毫无疑问是用 dart 来写的 sass 编译器。dart 是 flutter 的编程语言,可以编译为 js,所以它提供的 npm 是 js 的,不需要像 node-sass 一样和 node 版本有绑定关系。
2.了解了sass的起源知道了使用node-sass就需要对应的node版本进行编译,所以推荐nvm管理node版本。
a.nvm下载->安装包下载地址: https://github.com/coreybutler/nvm-windows/releases,windows直接下载【.exe】文件然后点击安装
b.如果有安装node,nvm会提示是否让它管理现有的node版本,点是即可。
c.修改nvm下载node的镜像源(选择):打开nvm文件夹下的settings.txt文件,在最后添加以下代码
arch:Windows 操作系统位数
proxy:代理,淘宝 NodeJS 镜像和 NPM 镜像
arch: 64
proxy:
node_mirror: https://npm.taobao.org/mirrors/node/
npm_mirror: https://npm.taobao.org/mirrors/npm/
d.nvm指令(注意使用cmd时,要以管理员的身份打开不然会导致各种出错,例如下载不了或者use不上):
nvm-list // 查看所有的node版本
nvm install <version> // nvm下载指定的node版本(nvm insall 8.16.2)
nvm uninstall <version> // nvm卸载指定版本
nvm-use <version> // 使用指定的node版本(nvm use 8.16.2)
nvm install stable // 安装最新稳定版
3.即使使用了正确的node版本编译,也可能会在下载node-sass失败或者时间会很长(国内网络环境的问题),所以我们还要配置下node-sass的下载源。
a.通过命令行配置node-sass下载源
// linux、mac 下
SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ npm install node-sass
// window 下
set SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ && npm install node-sass
b.创建.npmrc文件
1.在项目根目录创建.npmrc文件,复制下面代码到该文件。
sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
registry=https://registry.npm.taobao.org
2.保存后删除之前安装失败的包(第一次安装请跳过此步)再安装
npm uninstall node-sass
npm install node-sass
c.如果通过以上两种配置还不行的话就直接下载:
npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
参考文章:
1.https://developer.51cto.com/article/698854.html
2.https://blog.csdn.net/qq_38970408/article/details/124474050
3.https://blog.csdn.net/COCOLI_BK/article/details/121648480