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 }