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 }