三、处理样式文件(css/less/scss/stylus)--

2020-07-05  本文已影响0人  自己写了自己看

1、loader的特点

(1)loader的特点:
- (1)希望功能单一
- style-loader 将创建style标签,将css-loader解析出的样式append到style标签中,并append到head中去
- css-loader处理导入的资源 import 图片等 

(2)loader的用法:
- (1) loader后使用字符串 表示只用一个loader
- (2) 多个loader使用数组
- (3) loader的顺序:默认是从右到左 从下到上
- (4) loader还可以写成对象的形式

2、处理CSS文件

(1)使用的loader:
- css-loader style-loader
- css-loader 解析 @import 这种语法
- style-loader 将处理好的CSS插入到HTML的head标签中

(2)安装:
yarn add css-loader style-loader -D

(3)配置:
module: {
    rules: [{
        test: /\.css$/,
            use: [{
                    loader: 'style-loader',
                    options: {
                        insert: 'head' // 以前是insertAt属性
                    }
                },
                'css-loader'
            ]
        }]
}

3、处理 less/sass/stylus文件

(1)less文件对应的loader:
- yarn add less less-loader -D

(2)sass文件对应的loader
- yarn add node-sass sass-loader -D

(3)stylus对应的loader
- yarn add stylus stylus-loader -D

(4)配置文件增加对应的规则:
{
    test: /\.less$/,
    use: [{
            loader: 'style-loader',
            options: {
                insert: 'head' // 以前是insertAt属性
            }
        },
        'css-loader', // 解析 @import 语法和解析路径
        'less-loader' // 把less语法转换成css语法
    ]
}

4、此时对应的配置文件

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
    mode: 'development',
    devtool: 'eval',
    entry: {
        index: './src/index.js',
        login: './src/login.js'
    }, // 入口文件
    output: {
        path: path.join(__dirname, 'dist'), // 输出目录,只能是绝对目录
        filename: '[name].[hash].js' // 输出文件名
    },
    devServer: {
        contentBase: path.join(__dirname, 'dist'),
        port: 8080,
        host: 'localhost',
        compress: true,
        // open: true
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: './src/index.html', // 使用的HTML模板
            filename: 'index.html', // 打包生成到的HTML文件名
            minify: {
                removeAttributeQuotes: true, // 打包后去掉双引号
                collapseInlineTagWhitespace: true, // 打包后去空格
            },
            hash: true, // 会给每个引入的chunks在文件类型后添加一个hash值 
            chunks: ['login', 'index'], // 规定HTML中引入的chunks
            chunksSortMode: 'manual', // 规定引入chunks的排序方式
        })
    ],
    module: {
        rules: [{
                test: /\.css$/,
                use: [{
                        loader: 'style-loader',
                        options: {
                            insert: 'head' // 以前是insertAt属性
                        }
                    },
                    'css-loader'
                ]
            },
            {
                test: /\.less$/,
                use: [{
                        loader: 'style-loader',
                        options: {
                            insert: 'head' // 以前是insertAt属性
                        }
                    },
                    'css-loader',
                    'less-loader'
                ]
            }
        ]
    }
}
上一篇下一篇

猜你喜欢

热点阅读