webpack使用文档

本文档详细介绍了webpack的配置,包括entry、output、module、plugins和mode等核心概念。讲解了如何设置单入口和多入口,以及output的配置方法。此外,还涉及css兼容性和压缩,推荐使用如html-webpack-plugin、mini-css-extract-plugin和optimize-css-assets-webpack-plugin等插件进行处理。
摘要由CSDN通过智能技术生成

webpack

  • 中文文档
  • 配置文件: webpack.config.js
  • 基础插件:
    • html-webpack-plugin,
    • file-loader
  • 引入模块: path
    • const {resolve} = require(‘path’);
    • const HtmlWebpackPlugin = require(‘html-webpack-plugin’)

webpack 5个核心 概念

entry:’’,

entry: './src/index.js'

入口 指示webpack 以哪个文件作为入口起点开始打包,分析构建内部的依赖图
单入口 : 使用string 打包一个chunk 输出 一个bundle
多入口 数组 : [ “./src/a.js”,"./src/b.js"] 所有入口打包成一个chunk
多入口 对象 :

{
one:’./src/a.js’, //这还有一种特殊用法 one:["",""] 把数组里的打包成一个
two:’./src/b.js’
}

有几个入口文件就会生成 几个chunk 并输出 几个bundle chunk的名称是key output里的 filename :’[name].js’ 来获取

output:{},

output:{
    filename:"builde.js",
    path:resolve(__dirname,'build')
},

输出指示webpack 打包后的资源bundles 输出到哪里,以及命名

module:{},

module:{
    rules:[
        //打包css资源  先要去入口文件中导入
        // require('./style.css') ==>index.js
        { 
            test:/\.css$/,
            use:[
                //注意执行顺序是 从右往左.从下到上
                'style-loader',
                //如果要引入MiniCssExtractPlugin插件 把css提取出来 需要把style-loader 替换成这个插件 的实例
                'MiniCssExtractPlugin.loader',//使用了这个必须把上面的style-loader 注释掉只能存在一个
                'css-loader',
                //添加一个兼容性插件需要在css-loader下面检查 需要先导入一个插件包  postcss-preset-env
                'post-loader',

            ]
        },
        // 打包Less 资源 先要去入口文件导入
        {
            test:/\.less$/,
            use:[
                'style-loader',
                'css-loader',
                'less-loader',
            ],
        },
        //打包图片
        {
            test:/\.(jpg|png|gif)$/,
            use:[
                {
                    loader:'url-loader',
                    options:{
                        //指定打包后的图片的位置
                        outputPath:'images',
                        //指定所有图片 添加 前面路径.
                        publicPath: './images/',
                        // 设置8k的文件打包成base64位
                        limit:1024*8,
                        //设置名称 hash 前10位 如果想用原名则 {**name : '[name].[ext]'** }也可以拼接**name:'[name][hash:10].[ext]'**这样也是可以的.
                        name:'[hash:10].[ext]',

                    },
                },
                {
                    loader:'file-loader',
                    options:{

                    }
                }
            ]
        },

        {
            //图片在文档中的就必须要这个来处理,所以打包图片需要这两个检测 .
            test:/\.html$/,
            loader:'html-loader',
        }
    ]
}

需要处理的资源
css ==>{css-loader,style-loader}
less ==>{less-loader,css-loader,style-loader}
图片 ==> {url-loader,file-loader,html-loader}

plugins:[],

plugins:[
    // 需要先安装插件 html-webpack-plugin 再在文件前引入 
    //打包一个html文件就需要new 一个实例出来.
    new HtmlWebpackPlugin(
        {
        //指定模板文件
        template : './src/index.html',
        //设置输出文件的名字
        filename : "demo.html",
        //打包多个文件时某个文件需要添加某些js就可以在这里指定 
        chunks:['one','two']
        //压缩空格,注释
        minify:{
            //移除空格 
            collapseWhitespace:true,
            //移除注释
            removeComments:true,
        }
        }
    ),

    //使用MiniCssExtractPlugin插件 :
    {
        //还是需要先导入
        new MiniCssExtractPlugin(
            {
                //这里可以指定导出来的文件名称
                filename : 'demo.css',
                
            }
        ),
    },

    // optimize-css-assets-webpack-plugin 直接默认就好不需要去添加 其它选项 
    {
        new OptimizeCssAsssetsWebapckPlugin(),
    }

    {

    }
],

插件
常用插件:

{
html-webpack-plugins // 打包压缩html文件
mini-css-extract-plugin // 提取css为单独的文件
post-loader / postcss-preset-env //CSS兼容性插件
optimize-css-assets-webpack-plugin // 压缩CSS插件
},

mode

mode:'development',

开发模式(development)
生产模式(production)



其它问题

一些没有归类 的问题

css的兼容性

兼容性插件需要安装在css-loader 后边 先让这些插件修改兼容问题 然后再转给css-loader处理.
新版需要写:postcss.config.js

  • post-loader //这个是转义器
  • postcss-preset-env // 这是插件 插件 会自动去寻找 post-loader
    // 需要去修改package.json文件添加browserslist
    “browserslist”: [
    “> 0.2%”,
    “last 2 versions”,
    “not dead”,
    ]

压缩css

  • optimize-css-assets-webpack-plugin

配置文件入口

module.exports = {

    const {resolve} = require('path');
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    const MiniCssExtractPlugin = require('mini-css-extract-plugin');

    //入口
    entry: {
        one : './src/a.js',
        two : './src/b.js'
    },
    output:{
        output:{
        filename:"[name].js",
        path:resolve(__dirname,'build')
    },
    },
    moudle: [

    ],
    plugins:[
        // 需要先安装插件 html-webpack-plugin 再在文件前引入
        new HtmlWebpackPlugin(
            {
            //指定模板文件
            template : './src/index.html',
            //设置输出文件的名字
            filename : "demo.html",
            //压缩空格,注释
            minify:{
                //移除空格 
                collapseWhitespace:true,
                //移除注释
                removeComments:true,
            }
            }
        ),
    ],
    mode:'development',






}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值