webpack的理解,vue.config.js文件各个部分的含义

webpack是一个现代javascript应用程序的静态模块打包器

  • 语法转换。less/sass/stylus转换为css,ES5转换为ES%,……;
  • html.css.js代码压缩合并(打包);
  • webpack可以在开发期间提供一个开发环境。自动打开浏览器,保存时自动刷新;
  • 项目一般先打包在上线。开发用,上线不用,npm install 包名字 -D

 

vue.config.js

  1 const path = require('path')
  2 
  3 //引入自动生成的html插件
  4 const HtmlWebpackPlugin = require('html-webpack-plugin');
  5 
  6 //引入分离css文件的模块
  7 const MiniCssExtractPlugin = require('mini-css-extract-plugin');
  8 
  9 //导入清除插件,可以在每次打包之前清除dist目录的内容
 10 const { CleanWebpackPlugin } = require('clean-webpack-plugin');
 11 
 12 // webpack-dev-server 相关配置,需要将配置的对象到处,给webpack使用
 13 module.exports = {
 14   //入口entry,从哪个文件开始打包
 15   entry: './src/main.js',
 16   //出口output,打包到哪里去
 17   output:{
 18     //打包输出的目录(输出的目录必须是一个绝对路径)
 19     path:path.join(__dirname,'dist'),
 20     //打包后生成的文件名
 21     filename:'js/bundle.js'
 22   },
 23   //模式mode development未压缩的,production压缩
 24   mode:'development',
 25 
 26   //配置module模块加载规则
 27   //默认,webpack只认识json,js,
 28   module:{
 29     rules:[
 30     //(1)配置css文件的解析
 31     {
 32       //匹配所有以css结尾的文件,正则
 33       test:/\.css$/,
 34       //css-loader让webpack能够识别css文件
 35       //style-loader通过动态创建style标签的方式让解析后的css内容,能够作用到页面中
 36       use:[{
 37         loader:MiniCssExtractPlugin.loader,
 38         options:{
 39           //公共资源加载的路径
 40           publicPath:'../',
 41           //https://www.bilibili.com/video/BV1vJ411E7rn?p=6
 42         }
 43       },'css-loader'],
 44 
 45   
 46     },
 47     //(2)配置less文件的解析
 48     {
 49       test:/\.less$/,
 50       //use中从后往前作用,less转换为css,css转换为webpack可识别
 51       // use:['style-loader','css-loader','less-loader']
 52       use:[{
 53         loader:MiniCssExtractPlugin.loader,
 54         options:{
 55           //公共资源加载的路径
 56           publicPath:'../',
 57 
 58         }
 59       },'css-loader','less-loader']
 60     },
 61     //(3)配置图片文件的解析
 62     {
 63       test:/\.(png|jpg|gif)$/i,
 64       use:[
 65         //url-loader如果不配置,默认都会将文件转换为base64字符串的格式
 66       {
 67         loader:'url-loader',
 68         //8K以内转换为base64,8k以外,单独的一个文件请求
 69         options:{
 70           limit:8*1024,
 71           //配置输出的文件名
 72           name: '[name].[ext]',
 73           //配置静态资源的引用路径
 74           publicPath:'../images/',
 75           //配置输出的文件目录
 76           outputPath:"images/"
 77 
 78         }
 79       }
 80       ]
 81     },
 82     //(4)配置高版本js兼容性处理
 83     {
 84       test:/\.js$/,
 85       //exclude为配置排除项
 86       exclude:/(node_modules)/,
 87       use:{
 88         loader:'babel-loader',
 89         options:{
 90           presets:['@babel/preset-env']
 91         }
 92      }
 93   }]
 95 },
 96 
 97 //配置插件
 98 plugin:[
 99   //自动生成html的插件
100   new HtmlWebpackPlugin({template: './src/view/index.html'}),
101   //分离css的插件,定义打包好的文件的存放路径和文件名
102   new MiniCssExtractPlugin({
103     filename:'css/index.css'
104   }),
105   //清除dist目录的插件
106   new CleanWebpackPlugin()
107 ],
108 //配置开发服务器
109 devServer: {
110   port:3000,
111   open:true,
112 }
113 
114 }

 

posted on 2021-02-04 11:53  青小记  阅读(828)  评论(0编辑  收藏  举报