1.背景
less是一门css的扩展语言,用它我们可以更简洁地写样式。比如,
// main.css
#container {
width: 200px;
height: 100px;
margin: auto;
border: 1px solid;
display: flex;
background: url(./1.jpeg);
}
#container .button {
width: 100px;
height: 30px;
line-height: 30px;
text-align: center;
margin: auto;
border: 1px solid;
cursor: pointer;
}
用less,我们可以这样写
// main.less
#container {
width: 200px;
height: 100px;
margin: auto;
border: 1px solid;
display: flex;
background: url(./1.jpeg);
color: #fff;
.button {
width: 100px;
height: 30px;
line-height: 30px;
text-align: center;
margin: auto;
border: 1px solid;
cursor: pointer;
}
}
可以看到,less的语法更加直观整齐。当然less的语法有很多优点,具体请参考文档: less中文文档
要解析这种类型的文件,就需要用到less-loader,它会在遇到less文件时,将其内容解析成相应的css文件。
2.less-loader的使用:
安装:
npm install --save-dev less-loader less
module.exports = {
// 入口文件路径,__dirname是根目录
entry: __dirname + '/src/main.js',
// 打包生成文件
output: {
path: __dirname + '/output',
filename: 'main.js'
},
module: {
rules: [
{
test: /\.less$/,
use: [
'style-loader',
'css-loader',
'autoprefixer-loader',
'less-loader'
]
},
{
test: /\.jpeg$/,
// use: 'url-loader?limit=1024&name=[path][name].[ext]&publicPath=output/',
use: 'url-loader?limit=1024&name=[path][name].[ext]&outputPath=img/&publicPath=output/',
},
]
}
接下来执行webpack打包
npm start
3.css模块化
有时候,我们的样式写在不同的文件中,可能存在一个样式文件引入另一个样式文件的情况。比如上面的样式可以这样写:
// main.less
@import 'button.less';
#container {
width: 200px;
height: 100px;
margin: auto;
border: 1px solid;
display: flex;
background: url(./1.jpeg);
color: #fff;
}
#container {
.button {
width: 100px;
height: 30px;
line-height: 30px;
text-align: center;
margin: auto;
border: 1px solid;
cursor: pointer;
}
}
{
test: /\.less$/,
use: [
'style-loader',
'css-loader',
'autoprefixer-loader',
'less-loader'
]
},
4.demo
https://github.com/KIDFUCKER/webpack-demo.git
分支 v5-less-loader