dart-sass代替node-sass

9,249 阅读1分钟
  • 最近总会遇到安装node-sass插件失败问题,改用淘宝镜像和yarn都没有解决,最后改用了dart-sass

  • dart-sass是现在sass官网力推的,还有些缺陷,,但小项目用用还可以

  • Sass的主要实现有Ruby Sass 11和LibSass 20(node-sass底层使用的是LibSass),它们都有各自的优缺点。 Ruby Sass的实现语言是高级语言Ruby,更容易迭代,但存在运行速度慢,不易安装的缺点。LibSass虽然速度快,但它的开发语言是C/C++,迭代速度慢,无法快速地添加各种功能。

  • Dart的运行速度是真的快,对于大型样式文件,Dart Sass的处理速度是Ruby Sass的5~10倍,且只比LibSass慢1.5倍左右。 同时,Dart是一门具备静态类型的动态语言,对比C/C++甚至是Ruby,Dart相对更容易上手且代码也更易于编写和维护。此外,Dart具备编译输出为JavaScript的能力,使得Dart Sass可以兼容NodeJS平台。

  • LibSass作为目前性能最好的Sass实现,后续将继续维护,只是它不再需要背负快速添加各种新功能的压力。 Ruby Sass目前也会同步维护,但在无人接手的情况下,它将逐渐边缘化。Sass项目组后续主要精力将转移到Dart Sass,其稳定版本预计在2017年初放出。

使用dart-sass

npm i sass sass-loader -D

然后在webpack配置的module-rules里

{
        test: /\.(sa|sc)ss$/,
        use: [
          {
            loader: MiniCssExtractPlugin.loader
          },
          {
            loader: "css-loader"
          },
          {
            loader: "sass-loader",
            options: {
              implementation: require("sass")//使用dart-sass代替node-sass
            }
          },
        ]
      },

这样就不会遇到安装node-sass的各种安装失败问题了