vue node node-sass sass-loader 版本 对应 与 兼容

        警告: LibSass 和 Node Sass 已弃用。虽然它们将继续无限期地接收维护版本,但没有计划添加其他功能或与任何新的 CSS 或 Sass 功能兼容。仍在使用它的项目应该转移到 Dart Sass。 

sass
        Sass是一种预处理器脚本语言,可以解释或编译成层叠样式表(CSS)。

        Sass包含两种语法:较旧的语法使用缩进将代码块和换行符分隔为单独的规则;较新的语法SCSS使用像CSS这样的块格式。它使用大括号来表示代码块和分号来分隔块中的行。

        缩进语法和SCSS文件传统上分别给出扩展名.sass和.scss

node-sass
        Node-sass是一个库,它将Node.js绑定到LibSass(流行样式表预处理器Sass的C版本)。它允许用户以令人难以置信的速度将.scss文件本地编译为css,并通过连接中间件自动编译。

sass-loader
        sass-loader 是一个webpack 的loader,用于处理项目中的Sass/SCSS 文件。 它的作用是将Sass/SCSS 代码转换成CSS 代码,并将其注入到应用程序中。

兼容问题
        在安装node-sass的过程中,经常会出现兼容问题,导致安装失败,通常是由于node版本、node-sass版本、sass-loader版本不对应导致。
下面是一些推荐的版本对应规则:

首先是node和node-sass的版本对应规则:node-sass - npm 

NodeJSSupported node-sass versionNode Module
Node 209.0+115
Node 198.0+111
Node 188.0+108
Node 177.0+, <8.0102
Node 166.0+93
Node 155.0+, <7.088
Node 144.14+, <9.083
Node 134.13+, <5.079
Node 124.12+, <8.072
Node 114.10+, <5.067
Node 104.9+, <6.064
Node 84.5.3+, <5.057
Node <8<5.0<57

然后是node-sass和sass-loader的对应规则:

sass-loader 4.1.1,node-sass 4.3.0
sass-loader 7.0.3,node-sass 4.7.2
sass-loader 7.3.1,node-sass 4.7.2
sass-loader 7.3.1,node-sass 4.14.1
sass-loader 10.0.1,node-sass 6.0.1

        上面是部分对应规则,首先根据node版本确定好node-sass的版本,然后再选择sass-loader的版本。

        同时上面只是一部分sass-loader的版本对应,因为没有提供官方的对应规则,所以上面的版本还是不对的话,确定好node和node-sass版本之后,可以一个一个尝试sass-loader的版本,所有版本:sass-loader - npm

其它说明

        出现兼容问题的主要原因在于,早期开发人员使用比如node12版本,安装node-sass4+版本和sass-loader4+,可以正常运行,但是后期开发人员使用了更新的node,比如16,而16不支持低版本node-sass。

        同时即便切换到低版本node12中可以正常运行,但项目中使用了一些node12以上的代码语法,比如node14才支持的可选链语法,然后其它开发人员拉代码之后,就要么高版本node无法拉取node-sass包,要么切换低版本无法运行一些高版本node才支持的语法。
推荐还是使用高版本的node,然后升级node-sass和sass-loader版本。

其它方法

        直接放弃node-sass,使用dart-sass无缝替换。

node-sass与dart-sass区别:

node-sass 是用 node (调用 cpp 编写的 libsass) 来编译 sass。

dart-sass 是用 drat VM 来编译 sass。

node-sass 是实时自动编译的,dart-sass 需要保存后才会生效。

推荐 dart-sass 性能更好(也是 sass 官方使用的),除了上面的版本对应不上,很多时候node-

sass还因为国情问题经常装不上。

下面是切换方法,使用高版本node,然后根据下面操作:

1、卸载 node-sass

        npm uninstall node-sass

2、安装 dart sass

        npm install sass sass-loader -D

3、替换

        将项目中原有的 /deep/ 替换为::v-deep,也就这一步麻烦一些,具体需要个人评估。

### 配置 Vue3-SFC-Loader 使用 Sass 为了使 `vue3-sfc-loader` 支持 Sass,在项目中不仅需要安装相应的加载器,还需要确保 Webpack 或其他构建工具能够识别并编译 `.scss` 文件。具体操作如下: #### 安装依赖包 首先需安装 `sass-loader` 和其依赖项 `node-sass` 或者更现代的选择 `dart-sass`: ```bash npm install sass-loader node-sass --save-dev ``` 对于较新的项目推荐使用 Dart Sass 替代 Node Sass, 可以通过下面命令完成安装[^1]: ```bash npm uninstall node-sass npm install sass --save-dev ``` #### 修改 webpack 配置文件 为了让 Webpack 正确处理样式资源,应在配置文件中加入针对 `.scss` 的规则设置。如果采用的是默认的 Vue CLI 创建的应用,则可以在 `vue.config.js` 中添加自定义配置;如果是纯手工搭建环境则直接编辑 `webpack.config.js`。 当涉及到 SFC (单文件组件),`vue-loader` 负责解析这些特殊格式的文件,并依据内部不同部分调用相应处理器[^2]。因此要让 SASS 在 SFC 内生效,还需保证 `vue-loader` 已经被正确集成到开发环境中[^3]。 对于非CLI创建的Vue应用,可以这样调整 Webpack 设置来支持 SCSS/SASS : ```javascript module.exports = { module: { rules: [ // ... other rules omitted ... { test: /\.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'] }, { test: /\.sass$/, use: ['style-loader', 'css-loader', 'sass-loader?indentedSyntax'] } ] } }; ``` 需要注意的是,上述例子假设已经引入了 style-loader 来动态注入 CSS 到页面上。实际场景下可能还会涉及更多细节上的差异,比如是否启用了 MiniCssExtractPlugin 插件等。 最后一步是在 .vue 组件中的 `<style>` 标签里指定 lang 属性为 "scss" 或 "sass"[^4]: ```html <template> <!-- template content --> </template> <script setup> // script code here... </script> <style scoped lang="scss"> /* your scss styles */ </style> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdn_aspnet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值