webpack配置css模块化

模块化css文件

文件目录

在这里插入图片描述

安装如下包

css-loader
style-loader

编写配置文件

// webpack.config.js

module:{ // 模块配置
        rules:[ //规则
            /*  css-loader 解析 @import这种语法
                style-loader 它是将css插入到head的标签中
                loader的执行顺序是从右向左执行
             */
            { 
                test:/\.css$/,
                use:[
                        {
                            loader:'style-loader',
                            options:{
                                insert:"top"  // 将style文件插入到最顶部,解决在index.html写<style>body{...}</style>被后面的覆盖
                            }
                        },
                        'css-loader'
                    ] 
            }
        ]
    }

index.html

<!doctype html>
<html>
  <head>
    <title>起步</title>
  </head>
  <body>
  </body>
</html>

编写index.css

// index.css

body{
    background-color: aquamarine;
}

在index.js文件引入

// index.js
const yang = require('./nodetest');

++++++++++++++++   require('./css/index.css');

function component() {
    var element = document.createElement('div');
    console.log(yang.log('引入模块文件测试'))
    element.innerHTML = '第一个webpackdemo'
    return element;
}
  
document.body.appendChild(component());

保存完,在webpack配置好server自动热更新就可以用了

效果

在这里插入图片描述

总的配置文件

// webpack.config.js

const path = require('path');
console.log(path.resolve(__dirname, 'dist')) // e:\big ---project\Webpack project\test01\dist

const HTMLPlugin = require('html-webpack-plugin');

module.exports = {
    mode: "development", //模式:  "production" | "development" | "none"
    entry: './src/index.js', //入口
    output: { // 输出
        filename: 'main.js', // 打包后的文件名字
        //filename: 'main.[hash].js', // 打包后的文件名字变成带有哈希值
        //filename: 'main.[hash:8].js', // 文件的哈希值只显示8位
        path: path.resolve(__dirname, 'dist') // 路径必须是一个绝对路径,  --dirname:是使用当前目录出生成一个dist文件夹
    },
    devServer: { // 开发服务配置
        port: 3000,
        progress: true, // 是否显示加载进度条
        contentBase: './dist', // 映射地址
        compress:true  // 是否压缩
    },
    plugins: [ // 附加插件
        new HTMLPlugin({
            template:'./src/index.html', // 模板文件
            filename:'index.html',  // 打包出来的文件名
            minify:{
                removeAttributeQuotes:true, // 删除html页面的双引号
                collapseWhitespace:true,  // 将html页面压缩成一行
            },
            hash:true  // 将文件打包成哈希包
        })
    ],
    module:{ // 模块配置
        rules:[ //规则
            /*  css-loader 解析 @import这种语法
                style-loader 它是将css插入到head的标签中
                loader的执行顺序是从右向左执行
             */
            { 
                test:/\.css$/,
                use:[
                        {
                            loader:'style-loader',
                            options:{
                                insert:"top"  // 将style文件插入到最顶部,解决在index.html写<style>body{...}</style>被后面的覆盖
                            }
                        },
                        'css-loader'
                    ] 
            }
        ]
    }
};

能继续处理css预编译文件

这边举less为例,配置文件再加上个规则就OK了

// webpack.config.js

module: {
    rules: [ 
        {
            test: /\.css$/,
            use: [{
                    loader: 'style-loader',
                    options: {
                        insert: "top"
                    }
                },
                'css-loader'
            ]
        },
        { // 解析 less文件
            test: /\.less$/,
            use: [{
                    loader: 'style-loader',
                    options: {
                        insert: "top" 
                    }
                },
                'css-loader',
                'less-loader'
            ]
        }
    ]
}
};

将css编译后变成单个css文件

上述都是编译后直接写在html页面中的

因为我们使用了style-loader插件

安装如下包

mini-css-extract-plugin

然后修改配置文件

在这里插入图片描述

在这里插入图片描述

总的的配置文件

const path = require('path');
console.log(path.resolve(__dirname, 'dist')) // e:\big ---project\Webpack project\test01\dist

const HTMLPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
    mode: "development", //模式:  "production" | "development" | "none"
    entry: './src/index.js', //入口
    output: { // 输出
        filename: 'main.js', // 打包后的文件名字
        //filename: 'main.[hash].js', // 打包后的文件名字变成带有哈希值
        //filename: 'main.[hash:8].js', // 文件的哈希值只显示8位
        path: path.resolve(__dirname, 'dist') // 路径必须是一个绝对路径,  --dirname:是使用当前目录出生成一个dist文件夹
    },
    devServer: { // 开发服务配置
        port: 3000,
        progress: true, // 是否显示加载进度条
        contentBase: './dist', // 映射地址
        compress: true // 是否压缩
    },
    plugins: [ // 附加插件
        new HTMLPlugin({  // 打包html文件
            template: './src/index.html', // 模板文件
            filename: 'index.html', // 打包出来的文件名
            minify: {
                removeAttributeQuotes: true, // 删除html页面的双引号
                collapseWhitespace: true, // 将html页面压缩成一行
            },
            hash: true // 将文件打包成哈希包
        }),
        new MiniCssExtractPlugin({  // 打包css文件
            filename:"index.css" // 抽离出来的文件名字
        })
    ],
    module: { // 模块配置
        rules: [ //规则
            /*  css-loader 解析 @import这种语法
                style-loader 它是将css插入到head的标签中
                loader的执行顺序是从右向左执行
             */
            { // 解析 css文件
                test: /\.css$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    'css-loader'
                ]
            },
            { // 解析 less文件
                test: /\.less$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    'css-loader',
                    'less-loader'
                ]
            }
        ]
    }
};

css自动添加前缀

将css内的属性自动添加前缀

安装如下包

npm install postcss-loader autoprefixer 

然后修改配置文件

在这里插入图片描述

编写postcss.config.js文件

在这里插入图片描述

总的配置文件

const path = require('path');
console.log(path.resolve(__dirname, 'dist')) // e:\big ---project\Webpack project\test01\dist

const HTMLPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
    mode: "development", //模式:  "production" | "development" | "none"
    entry: './src/index.js', //入口
    output: { // 输出
        filename: 'main.js', // 打包后的文件名字
        //filename: 'main.[hash].js', // 打包后的文件名字变成带有哈希值
        //filename: 'main.[hash:8].js', // 文件的哈希值只显示8位
        path: path.resolve(__dirname, 'dist') // 路径必须是一个绝对路径,  --dirname:是使用当前目录出生成一个dist文件夹
    },
    devServer: { // 开发服务配置
        port: 3000,
        progress: true, // 是否显示加载进度条
        contentBase: './dist', // 映射地址
        compress: true // 是否压缩
    },
    plugins: [ // 附加插件
        new HTMLPlugin({  // 打包html文件
            template: './src/index.html', // 模板文件
            filename: 'index.html', // 打包出来的文件名
            minify: {
                removeAttributeQuotes: true, // 删除html页面的双引号
                collapseWhitespace: true, // 将html页面压缩成一行
            },
            hash: true // 将文件打包成哈希包
        }),
        new MiniCssExtractPlugin({  // 打包css文件
            filename:"index.css" // 抽离出来的文件名字
        })
    ],
    module: { // 模块配置
        rules: [ //规则
            /*  css-loader 解析 @import这种语法
                style-loader 它是将css插入到head的标签中
                loader的执行顺序是从右向左执行
             */
            { // 解析 css文件
                test: /\.css$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    'css-loader',
                    'postcss-loader'
                ]
            },
            { // 解析 less文件
                test: /\.less$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    'css-loader',
                    'less-loader',
                    'postcss-loader'
                ]
            }
        ]
    }
};

css代码压缩

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值