<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      webpack生產環境優化:多線程打包

      轉載請注明 來源:http://www.eword.name/
      Author:eword
      Email:eword@eword.name

      webpack生產環境優化:多線程打包

      多線程打包主要用于需要打包的文件較多的情況下提高打包效率,縮短打包時間。
      注意:開啟多進程打包時,進程開啟大概需要600ms,進程通信也有開銷。
      建議:只有工作消耗時間比較長時,才開啟多進程打包。否則可能開多進程打包后,花費的時間會更長。

      一、下載插件

      多線程打包需要插件thread-loader的支持。
      這里使用thread-loader@2.1.3

      > npm i -D thread-loader@2.1.3
      

      二、核心配置

      /*
          webpack.config.js webpack的配置文件
          路徑: ./webpack.config.js
      */
      
      // resolve用來拼接絕對路徑的方法
      const { resolve } = require('path');
      
      
      
      module.exports = {
          // webpack配置
          // 入口起點文件
          entry: './src/js/index.js',
          // 輸出
          output: {
              // 輸出文件名
              filename: 'js/built.[contenthash:10].js',
              // 輸出路徑
              // __dirname nodejs的變量,代表當前文件的目錄絕對路徑
              path: resolve(__dirname, 'build'),
          },
          // loader的配置
          module: {
              rules: [
      
                  // 詳細loader配置
                  //不同文件必須配置不同loader處理
      
      
                 ……
      
                  {
                      // 以下 loader 只會匹配一個
                      // 注意:不能有兩項配置處理同一種類型的文件
                      // 例如:js文件的語法檢查和兼容性處理,不能放在同一個oneOf中。
                      oneOf: [
      
                          ……
      
                          /*
                               js兼容性處理:babel-loader @babel/core @babel/preset-env
                               1.基本js兼容性處理 @babel/preset-env
                               問題:只能轉換基本語法,如promise不能轉換 
                               2.全部js兼容性處理 --> @babel/polvfill
                               問題:我只要解決部分兼容性問題,但是將所有兼容性代碼全部引入,體積太大了~ 
                               3. 需要做兼容性處理的就做:按需加載 --> core-js
                               */
                          {
                              test: /\.(?:js|mjs|cjs)$/,
                              exclude: /node_modules/,
                              use: [
                                  /* 
                                      開啟多進程打包 
                                      進程啟動大概為600ms,進程通信也有開銷。
                                      只有工作消耗時間比較長,才需要多進程打包     
                                  */
      
                                  {
                                     loader: "thread-loader",
                                     options:{
                                      workers:2 //啟用兩個進程
                                     }
                                  },
                                  {
                                      // 指定檢查的目錄,或者配置排除某些文件夾
                                      // include: [path.resolve(__dirname, 'src')], 
                                      // 注意:只檢查自己寫的源代碼,第三方的庫是不用檢查的,這里排除node_modules文件夾
                                      loader: "babel-loader",
                                      options: {
                                          // 預設:指示 babel 做怎么樣的兼容性處理
                                          "presets": [
                                              [
                                                  "@babel/preset-env",
                                                  {
                                                      // 按需加載
                                                      useBuiltIns: 'usage',
                                                      // 制定 core-js 版本
                                                      corejs: {
                                                          version: 3
                                                      },
                                                      //指定兼容性做到哪個版本的瀏覽器
                                                      targets: {
                                                          chrome: '60',
                                                          firefox: '60',
                                                          ie: '9',
                                                          safari: '10',
                                                          edge: '17'
                                                      }
                                                  }
                                              ]
                                          ],
                                          // 開啟babel緩存
                                          //第二次構建時,會讀取之前的緩存
                                          cacheDirectory: true
                                      }
                                  }
                              ],
                          },
                          
                    ……
                    
                      ]// oneOf  [] end
                  }// oneOf {} end
              ],
          },
      
                  ……
                  
          // 模式  development  開發環境,production 生產環境
          // mode: 'development',
          // 生產環境下會自動壓縮js代碼
          mode: 'production',
              
                  ……
      
      };
      
      

      核心配置

      /*
          webpack.config.js webpack的配置文件
          路徑: ./webpack.config.js
      */
      ……
          {
              test: /\.(?:js|mjs|cjs)$/,
              exclude: /node_modules/,
              use: [
                  /* 
                      開啟多進程打包 
                      進程啟動大概為600ms,進程通信也有開銷。
                      只有工作消耗時間比較長,才需要多進程打包     
                  */
                  "thread-loader",
                  {
                      loader: "babel-loader",
                      options: {
                          // 預設:指示 babel 做怎么樣的兼容性處理
                          "presets": [
                             ……
                          ],
                          // 開啟babel緩存
                          //第二次構建時,會讀取之前的緩存
                          cacheDirectory: true
                      }
                  }
              ],
          },
      

      thread-loader通常配置在js兼容性檢查中,當然也可以運用于其他loader配置。

      OR

      /*
          webpack.config.js webpack的配置文件
          路徑: ./webpack.config.js
      */
      ……
          {
              test: /\.(?:js|mjs|cjs)$/,
              exclude: /node_modules/,
              use: [
                  /* 
                      開啟多進程打包 
                      進程啟動大概為600ms,進程通信也有開銷。
                      只有工作消耗時間比較長,才需要多進程打包     
                  */
                  {
                     loader: "thread-loader",
                     options:{
                          workers:2 //啟用兩個進程
                     }
                  },
                  {
                      loader: "babel-loader",
                      options: {
                          // 預設:指示 babel 做怎么樣的兼容性處理
                          "presets": [
                             ……
                          ],
                          // 開啟babel緩存
                          //第二次構建時,會讀取之前的緩存
                          cacheDirectory: true
                      }
                  }
              ],
          },
      

      配置開啟的多進程數量

      posted @ 2023-08-28 22:39  影烏  閱讀(502)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产蜜臀精品一区二区三区| 永久无码天堂网小说区| 精品久久人人妻人人做精品| 国产乱色国产精品免费视频| 最近日本免费观看高清视频| 亚洲一区二区三区黄色片| 南康市| 日韩伦理片一区二区三区| 色猫咪av在线网址| 亚洲一区二区精品偷拍| 国产精品偷伦费观看一次 | 国产明星精品无码AV换脸| 在线无码午夜福利高潮视频| 国产午夜亚洲精品国产成人 | av日韩精品在线播放| 亚洲精品日韩在线丰满| 日韩精品成人区中文字幕| 亚洲人成精品久久久久| a男人的天堂久久a毛片| 精品欧洲av无码一区二区| 久久国产热这里只有精品| 国产av午夜精品福利| 国产午夜福利视频合集| 成人网站免费在线观看| 97人人添人人澡人人澡人人澡| 日本一区二区久久人妻高清| 蜜臀av在线观看| 开心五月激情五月俺亚洲| 久女女热精品视频在线观看| 中文字幕亚洲人妻系列| 开心一区二区三区激情| 久久五十路丰满熟女中出| 亚洲天堂成人网在线观看| 亚洲情A成黄在线观看动漫尤物| 久久综合久中文字幕青草| 亚在线观看免费视频入口| 98日韩精品人妻一二区| h无码精品3d动漫在线观看| 色妞www精品免费视频| 色噜噜在线视频免费观看| 一卡二卡三卡四卡视频区|