06-webpack提取CSS为单独文件

css内容是打包在js文件中的, 可以使用”mini-css-extract-plugin”插件提取成单独的CSS文件。

  1. 下载插件
    npm i mini-css-extract-plugin -D

  2. 在webpack.config.js 中引入插件
    const MiniCssExtractPlugin = require('mini-css-extract-plugin');

  3. 在plugins模块中使用插件

module: {                  //css打包规则
        rules: [{
            test: /\.css$/,        //把项目中所有以.css结尾的文件打包,插入到html里
            use: [MiniCssExtractPlugin.loader,"css-loader"]  //css兼容loader,单独的css文件
        }, {
            test: /\.less$/,
            use: ["style-loader","css-loader","less-loader"]   //从右到左,内联样式
        },{
            test: /\.scss$/,
            use: ["style-loader","css-loader","sass-loader"]
        }]
    },
//打包成单独的css文件
plugins: [
        //打包成单独的css文件
        new MiniCssExtractPlugin({
        //通过参数 filename重新命名提职的css文件名
            filename: "./css/demo.css"
        })
    ]

webpack.config.js

const {resolve} = require("path")   //从path中接收resolve方法
const htmlWebpackPlugin = require("html-webpack-plugin")      //引入html打包插件
const MiniCssExtractPlugin = require("mini-css-extract-plugin")         //提取成单独的CSS文件的插件
module.exports={
    entry: {
        vendor: ["./src/js/jq.js","./src/js/common.js"],
        index: "./src/js/index.js",
        cart: "./src/js/chart.js"
    },
    output: {
        path: resolve(__dirname, "./build"),    //输出路径
        filename: "[name].js"    //输出文件名
    },
    mode: "development",       //webpack使用相应的模式配置
    module: {                  //css打包规则
        rules: [{
            test: /\.css$/,        //把项目中所有以.css结尾的文件打包,插入到html里
            use: [MiniCssExtractPlugin.loader,"css-loader"]  //css兼容loader,单独的css文件
        }, {
            test: /\.less$/,
            use: ["style-loader","css-loader","less-loader"]   //从右到左,内联样式
        },{
            test: /\.scss$/,
            use: ["style-loader","css-loader","sass-loader"]
        }]
    },
    plugins: [
        //默认创建一个空的html,目的就是自动引入打包的资源js/css
        new htmlWebpackPlugin({              //引用插件
            template: "./src/index.html",           //index.html不用加script,也可以自动引入js文件
            filename: "index.html",           //输出的打包的文件名
            chunks: ['index','vendor'],
            // 压缩html代码
            minify: {
                //移除空格
                collapseWhitespace: true,
                //移除注释
                removeComments: true

            }
        }),
        //打包成单独的css文件
        new MiniCssExtractPlugin({
        //通过参数 filename重新命名提职的css文件名
            filename: "./css/demo.css"
        })
    ]
}
  1. 执行webpack后的目录结构
    在这里插入图片描述

  2. html页面
    在这里插入图片描述
    只有lessstyle.less和sassstyle.scss的内容成为内联样式,style.css打包成了单独的css文件为demo.css

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值