webpack.config.js 具体配置操作

250 阅读1分钟

项目开发:一般可以分为两种模式,一种是开发模式(“开发环境”),另外一种叫生成模式(“生产环境”)

开发环境:当我们在开发项目阶段,这个过程中我们使用开发服务器来打包项目,这个环境就是开发环境。

生产环境:项目开发完成了,我们需要通过 npm run build 打包我的项目,这个时候就叫做生产环境

module.exports={
    //开发环境用development表示,生产环境用production表示
    mode:"development",
    
    entry:"./src/main.js",
    plugins:[
        new HtmlWebpackPlugin({
//template:模板,也就是将来打包的到dist文件中的html是根据这个模块html生成的
//如果没有配置模板,会自动生成有个html打包到dist文件中
            template:'./pubilc/index.html'
        })
    ],
    module:{
    rules:[//专门用于配置加载器的地方
    {//处理css文件
    test:/.css$/i//正则表达式,表示匹配以.css结尾的文件,i表示不区分大小写
    //注意:这两个加载的书写顺序不能改变
    use:['style-loader','css-loader']//表示用我们下载的两个加载器来处理css文件。
},
{//处理less文件
    test:/.less$/,
    use:['style-loader','css-loader','less-loader']
    },
 {//处理图片
     test:/.(png|jpg|gif|jpeg)$/i,
     //利用webpack5的asset module技术实现webpack处理图片
     //当图片小于8kb的时候,将图片转base64打包进js代码中
         //大于8kb,直接输入文件
     type:'asset'
 },
     {//处理字体图标文件
         test:/.(eot|svg|tff|woff|woff2)$/,
        type:'asset/resource',
         generator:{
             //[name]:表示获取到文件的原名字
             //[hash:6]:表示生产6位数字的哈希值
             //hash(哈希):由字母和数字构成的随机字符串就叫哈希值
             //[ext]:表示获取原文件的后缀名
             //对打包的字体图标文件进行重命名
        filename:'font/[name].[hash:6][ext]',
      }
     },
         {//语法进行降级处理
             test:/.js$/,
             //排出不需要降级处理的js文件,
             //比如我们下载在node_modules文件中的第三方包
             exclude:/node_modules/,
                 use:{
                     loader:'babel-loader',
                     options:{
                         presets:['@babel/preset-env']
                     }
                 }
             
         }
    ]
},
    //devServer就是专门用来设置开发服务器相关的配置的地方
    devServer:{
        port:3000//设置端口号为3000
    }
}

\