成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Webpack 原理與實踐之如何優化 Webpack 的打包速度和構建效率

開發 前端
對于不同環境的配置中,需要先導入公共配置文件,我們在后面對前面的屬性進行覆蓋,但是Object.assign會把之前的完全覆蓋。

寫在前面

在前面文章中介紹了一些webpack配置和特性,能夠提升我們的開發效率,讓開發者能夠有著更好的開發體驗。但是,也伴隨這新的問題出現,打包結果會變得越來越臃腫,因為在這個過程中Webpack為了實現這些特性,會自動往打包結果中添加一些內容。例如之前使用的Source Map會在輸出結果中添加額外的代碼實現相應的功能,但是生產環境和開發環境有所差異,對于生產環境而言注重的運行效率,在開發環境注重的是開發效率。為此,wepack在4.0版本提供了module模式,方便我們在各種環境下進行不同的配置。

不同環境的配置

創建不同的環境配置的方式主要有兩種:

  • 在配置文件中添加相應的判斷條件,根據環境不同導出不同配置
  • 為不同環境單獨添加一個配置文件,一個環境對應一個配置文件
  1. //webpack.config.js  
  2. module.exports = (env,arg)=>{ 
  3.   //不同模式下公共配置 
  4.   const config = { 
  5.    
  6.   } 
  7.    
  8.   if(env === "development"){ 
  9.     //為config添加開發模式下的特殊配置 
  10.     config.mode = "development" 
  11.     config.devtool = "cheap-eval-module-source-map" 
  12.   }else if(env === "production"){ 
  13.     //為config添加生產模式下的特殊配置 
  14.     config.mode = "production" 
  15.     config.devtool = "nosources-source-map" 
  16.   } 
  17.   return config 

通過上面的配置文件,我們可以在終端運行根據不同環境判斷執行不同的配置,對于大型環境適合在不同環境條件下使用不同的配置。我們可以將公共模式的文件抽取出來,分別設置開發環境和生產環境下的模式文件。

  1. //webpack.common.js 
  2. module.exports = { 
  3.   //公共配置 
  4.  
  5. //webpack.prod.js 
  6. const common = require("./webpack.common"
  7. module.exports = Object.assign(common,{ 
  8.   //生產模式配置 
  9. }) 
  10.  
  11. //webpack.dev.js 
  12. const common = require("./webpack.common"
  13. module.exports = Object.assign(common,{ 
  14.   //開發模式配置 
  15. }) 

對于不同環境的配置中,需要先導入公共配置文件,我們在后面對前面的屬性進行覆蓋,但是Object.assign會把之前的完全覆蓋。對于plugins數組我們需要在原先的基礎中添加配置,為此我們需要lodash的merge函數或者webpack社區的webpack-merge插件進行使用。

  1. //webpack.common.js 
  2. module.exports = { 
  3.   //公共配置 
  4.  
  5. //webpack.prod.js 
  6. const merge = require("webpack-merge"
  7. const common = require("./webpack.common"
  8. module.exports = merge(common,{ 
  9.   //生產模式配置 
  10. }) 
  11.  
  12. //webpack.dev.js 
  13. const merge = require("webpack-merge"
  14. const common = require("./webpack.common"
  15. module.exports = merge(common,{ 
  16.   //開發模式配置 
  17. }) 

在分別配置完成過后,回到命令行終端,嘗試運行webpack打包,不過因為這里已經沒有默認的配置文件,所以需要通過--config參數來指定所使用的配置文件路徑。

  1. $ webpack --config webpack.prod.js 

生產環境下的優化插件

在weback4中新增的production模式下,內部已經自動開啟了很多通用的優化功能,對于使用者而言可以開箱即用。對于學習者而言,開箱即用會導致忽略很多需要了解的東西,以至于出現問題無從下手。

  1. const webpack = require("webpack"); 
  2.  
  3. module.exports = { 
  4.   //其他配置 
  5.   plugins:[ 
  6.     new webpack.DefinePlugin({ 
  7.       API_BASE_URL:"https://api.example.com" 
  8.     }) 
  9.   ] 

我們看到值要求的是一個代碼片段:

  1. const webpack = require("webpack"); 
  2.  
  3. module.exports = { 
  4.   //其他配置 
  5.   plugins:[ 
  6.     new webpack.DefinePlugin({ 
  7.       API_BASE_URL:JSON.stringify("https://api.example.com"
  8.     }) 
  9.   ] 

參考文章

《webpack原理與實踐》

《webpack中文文檔》

寫在最后

本文介紹了如何在webpack添加不同環境的配置文件,以及在生產模式打包時經常用到的幾個插件。我們可以針對生產環境下的打包進行優化,能夠提升生產環境的運行效率。

 

責任編輯:武曉燕 來源: 前端萬有引力
相關推薦

2021-12-16 22:02:28

webpack原理模塊化

2021-12-25 22:29:04

WebpackRollup 前端

2019-03-15 15:00:49

Webpack構建速度前端

2021-12-20 00:03:38

Webpack運行機制

2021-12-19 07:21:48

Webpack 前端插件機制

2021-12-15 23:42:56

Webpack原理實踐

2021-07-04 22:22:23

Webpack5前端工具

2024-05-27 00:00:01

2021-12-21 14:00:25

WebpackDevServer的開發

2021-12-22 22:44:49

Webpack熱替換模塊

2021-12-17 00:02:28

Webpack資源加載

2017-03-24 10:56:21

Webpack技巧建議

2021-09-06 06:45:06

Webpack優化MindMaster

2017-05-02 16:29:11

Webpack技巧建議

2024-09-27 11:46:51

2021-05-10 08:34:47

webpack手段devServer

2020-09-19 21:26:56

webpack

2020-08-05 08:21:41

Webpack

2019-03-26 10:02:16

WebpackJavascript前端

2021-06-28 05:59:17

Webpack 前端打包與工程化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 视频一区二区在线观看 | 日韩视频在线播放 | 91人人澡人人爽 | 久久精品亚洲精品国产欧美 | 欧美日韩国产在线 | 一区二区在线看 | 国产激情视频在线观看 | 蜜臀av日日欢夜夜爽一区 | 特级丰满少妇一级aaaa爱毛片 | 欧美 日韩 在线播放 | 国产乱码精品一品二品 | 日韩欧美在线视频 | 国产精品久久久久aaaa九色 | 久久国产精品-久久精品 | 黄视频国产 | 婷婷精品| 欧美精品一区二区三区在线播放 | 国产精品日韩一区二区 | 亚洲免费在线 | 久久国产精品一区二区三区 | 91在线观看| 青青草这里只有精品 | 日韩在线免费电影 | 91麻豆精品国产91久久久更新资源速度超快 | 日本成人中文字幕在线观看 | 在线观看成年人视频 | 欧美美女爱爱视频 | 国产伦一区二区三区视频 | 国产男女猛烈无遮掩视频免费网站 | 久久机热 | 午夜精品 | 日日骚av | 亚洲精品久久久久久久久久吃药 | 99久久国产免费 | h在线| 久久精品欧美一区二区三区麻豆 | 美女天天干 | 九九九久久国产免费 | 亚洲自拍偷拍欧美 | 久久久久国产一区二区三区 | 亚洲一区不卡 |