webpack学习笔记-4-less-loader

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

配置less-loader:

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/',
            },
        ]
    }


注意要将demo中require('./main.css')改成require('./main.less')

接下来执行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;
}

// button.less

#container {
    .button {
        width: 100px;
        height: 30px;
        line-height: 30px;
        text-align: center;
        margin: auto;
        border: 1px solid;
        cursor: pointer;
    }
}

引入样式文件的语句 @import 'button.less';是用css-loader进行解析的。因此我们对less文件的配置

            {
                test: /\.less$/,
                use: [
                    'style-loader',
                    'css-loader',
                    'autoprefixer-loader',
                    'less-loader'
                ]
            },

是这样执行的:首先,less-loader把less文件里less语法转成css语法,然后用autoprefixer-loader添加浏览器前缀,然后解析引入的文件,最后把计算好的css代码放到一个style标签插入到head标签中。

4.demo

https://github.com/KIDFUCKER/webpack-demo.git

分支 v5-less-loader


你可能感兴趣的:(前端-webpack)