美文网首页程序员
webpack打包css中的img和页面中的img

webpack打包css中的img和页面中的img

作者: 人间四月天i | 来源:发表于2020-08-27 15:04 被阅读0次

安装

  • npm install css-minimizer-webpack-plugin mini-css-extract-plugin html-webpack-plugin --save-dev
  • npm install html-withimg-loader --save-dev (注:html中的img打包)
  • npm install style-loader css-loader --save-dev
目录结构 package.json目录

完整代码在下面

const path = require("path")
// 压缩css
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
// 打包css
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
// 打包html
var htmlWebpackPlugin=require("html-webpack-plugin")

module.exports = {
    module: "development",
    entry: {
        index: ['./src/js/index.js']
    },
    output: {
        path: path.resolve(__dirname, "./dist/"),
        filename: "js/[name].js"
    },
    module: {
        rules: [
            {
                test: /\.(htm|html)$/i,
                use: [
                  'html-withimg-loader'   // npm install html-withimg-loader --save-dev   安装
                ]
            },          
            {
                test:/\.css$/,
                use:[MiniCssExtractPlugin.loader,'css-loader'],
                
            },
            {
                test:/\.(png|jpg|gif|jpeg|svg)$/,
                use:[
                    {
                        loader: "url-loader",
                        options: {
                            esModule: false,  //file-loader和 html-withimg-loader 冲突了 设为false即可
                            name: "img/[name].[hash:5].[ext]",
                            limit: 1024, // size <= 1kib
                            publicPath: "../"
                        }
                    }
                ]
            }
        ]
    },
    optimization: {
        minimize: true,
        minimizer: [new CssMinimizerPlugin()],
      },
    plugins: [
        // 打包html
        new htmlWebpackPlugin({
            template:"./index.html",
            filename:path.resolve(__dirname,"./dist/index.html")
        }),
        //可以打包在一个文件夹内
        new MiniCssExtractPlugin({
            filename:"css/[name].css"
        }),
    ],
}

总结

  • dist是打包之后的!!!
  • webpack4需要mini-css-extract-plugin来分开打包css文件,不能用extract-text-webpack-plugin 不支持了- webpack4
  • 这样打包css 如果有多个css文件会打包成一个文件
  • 如果图片太小的话会转成base64 不会再img文件中显示 limit 可以设置图片大小

相关文章

网友评论

    本文标题:webpack打包css中的img和页面中的img

    本文链接:https://www.haomeiwen.com/subject/povcsktx.html