less安装_手动配置Webpack之添加less-sass-loader

今天小编就和同学一起来学习一下如何在vue文件里面能够使用less,scss的css预处理解析器,本篇的代码是基于手动配置Webpack之添加webpack-dev-server的基础上来进行修改的。

直接在vue文件里面使用less语法

先看看package.json文件

a5dc75b3115fefcbb8b0d6cfdb2f0c62.png

vue使用less

{  "name": "vue-webpack",  "version": "1.0.0",  "description": "",  "main": "index.js",  "scripts": {    "build": "webpack",    "dev": "webpack-dev-server --open"  },  "keywords": [],  "author": "",  "license": "ISC",  "devDependencies": {    "html-webpack-plugin": "^4.0.4",    "vue": "^2.6.11",    "vue-loader": "^15.9.1",    "vue-template-compiler": "^2.6.11",    "webpack": "^4.42.1",    "webpack-cli": "^3.3.11",    "webpack-dev-server": "^3.10.3"  }}

我们的vue文件内容如下:

2ca2606836ae20028c614ae727bd6814.png

vue中使用less语法

然后我们来运行下面的命令:

yarn install & yarn dev

接下来应该就会出现下面的错误:

811c4f9aaacb3f43531f84cd2782cf22.png

没有less-loader出现的错误

错误的关键就是在:

You may need an additional loader to handle the result of these loaders.| | > .less_style{|     width: 200px;|     height: 200px; @ ./src/main.vue?vue&type=style&index=0&id=3c208292&lang=less&scoped=true& 1:0-149 1:165-168 1:170-316 1:170-316 @ ./src/main.vue @ ./src/index.js

也就是说你需要一个loader来处理下面的语句,其实这个时候我们就要安装一个less-load。

安装less-loader

有心的同学肯定要问一个问题,我要安装什么样的loader(或者说插件),这个就需要配置相应的webpack,既然要配置webpack就需要在webpacke官方文档中找,less-loader的webpack配置(https://www.webpackjs.com/loaders/less-loader/),为什么小编会提出这个问题呢?因为小编在学习的时候就有这样的疑问,但是大多数的教程里面都不会教你如何学习或者说为什么需要安装,在哪里去找资料等等这些学习方法,好了,看看官方怎么说的:

d9661400e6b3f6fdee89d23b88fe10d3.png

安装less-loader

这里需要注意他下面的一句话:

The less-loader requires less as peerDependency. Thus you are able to control the versions accurately.

意思就是说less-loader需要依赖less这个包,所以我们需要安装less和less-loader

npm install --save-dev less-loader less

配置webpack.config.js

这里还是要强调一下,因为我们的项目是使用webpack进行开发调试,打包发布的,所以既然我们安装了一些需要特殊处理的文件就需要对应的插件或包,不是说安装任何一个包就需要配置webpack哦,这个就要安装的什么样的包,不要闲啰嗦,因为小编自己在学习的时候经常都是稀里糊涂的安装一些包,有些都不知道做什么为什么要安装,好了,webpack的官方实例配置如下:

// webpack.config.jsmodule.exports = {    ...    module: {        rules: [{            test: /.less$/,            use: [{                loader: "style-loader" // creates style nodes from JS strings            }, {                loader: "css-loader" // translates CSS into CommonJS            }, {                loader: "less-loader" // compiles Less to CSS            }]        }]    }};

这里就是在module这个配置下面的rules添加一个解析规则就好,这里为什么需要"style-loader css-loader",官方给一下说明:

将 css-loader、style-loader 和 less-loader 链式调用,可以把所有样式立即应用于 DOM。

所以这个还要安装styel-loader,css-loader

yarn add css-loader style-loader -S 或 cnpm i css-loader style-loader

这个可以在webpack.config.js里面不加css-loader,style-loader会产生什么效果。

运行一下

19ee439ba46a12747212307eda89d498.png

这些就没有错了。

安装scssloader

官方的loader

f4f02cc39f716125e919c28c27d5c891.png

sass-loader sass

链接地址(https://webpack.js.org/loaders/sass-loader/#root)

我们只需要安装sass-loader sass这两个就可以了

cnpm install sass-loader sass  --save-dev

sass的webpack配置

c18ad03192bef7b6e0ae450ad0644725.png

sass webpack配置

module.exports = {  module: {    rules: [      {        test: /.s[ac]ss$/i,        use: [          // Creates `style` nodes from JS strings          'style-loader',          // Translates CSS into CommonJS          'css-loader',          // Compiles Sass to CSS          'sass-loader',        ],      },    ],  },};

我的webpackage.config.js,module-rules配置

cef88f4d406855241e5c4d6570b8381d.png
module: {        rules: [{            test: /.vue$/,            use: ["vue-loader"]        },        {            test: /.less$/,            use: [                "style-loader", // creates style nodes from JS strings                "css-loader", // translates CSS into CommonJS                "less-loader", // compiles Less to CSS            ]        },        {            test: /.s[ac]ss$/i,            use: [              // Creates `style` nodes from JS strings              'style-loader',              // Translates CSS into CommonJS              'css-loader',              // Compiles Sass to CSS              'sass-loader',            ],        }        ]            },

这里无论是.sass还是.scss文件都能够处理,这里less的多个loader我就直接把上面的每一个loader对象给去掉了。

scss语法测试

vue文件的:

9525bd644d486c71a47355049431ff03.png

less,scss语法

这里都使用了less,scss语法进行测试。

scss测试结果

e9f5fad4b83b1fc5d2edb96846040376.png

OK,测试正常。本篇代码地址:https://gitee.com/hsjklab/vue-webpack4.git

欢迎大家在评论区评论,如有热爱前沿IT技术可以跟小编多交流,也让小编多学习学习。

Share your knowledge with the world

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页