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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM