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

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

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

      webpack生產(chǎn)環(huán)境優(yōu)化:多線程打包

      轉(zhuǎn)載請注明 來源:http://www.eword.name/
      Author:eword
      Email:eword@eword.name

      webpack生產(chǎn)環(huán)境優(yōu)化:多線程打包

      多線程打包主要用于需要打包的文件較多的情況下提高打包效率,縮短打包時間。
      注意:開啟多進程打包時,進程開啟大概需要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
                               問題:只能轉(zhuǎn)換基本語法,如promise不能轉(zhuǎn)換 
                               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: {
                                          // 預(yù)設(shè):指示 babel 做怎么樣的兼容性處理
                                          "presets": [
                                              [
                                                  "@babel/preset-env",
                                                  {
                                                      // 按需加載
                                                      useBuiltIns: 'usage',
                                                      // 制定 core-js 版本
                                                      corejs: {
                                                          version: 3
                                                      },
                                                      //指定兼容性做到哪個版本的瀏覽器
                                                      targets: {
                                                          chrome: '60',
                                                          firefox: '60',
                                                          ie: '9',
                                                          safari: '10',
                                                          edge: '17'
                                                      }
                                                  }
                                              ]
                                          ],
                                          // 開啟babel緩存
                                          //第二次構(gòu)建時,會讀取之前的緩存
                                          cacheDirectory: true
                                      }
                                  }
                              ],
                          },
                          
                    ……
                    
                      ]// oneOf  [] end
                  }// oneOf {} end
              ],
          },
      
                  ……
                  
          // 模式  development  開發(fā)環(huán)境,production 生產(chǎn)環(huán)境
          // mode: 'development',
          // 生產(chǎn)環(huán)境下會自動壓縮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: {
                          // 預(yù)設(shè):指示 babel 做怎么樣的兼容性處理
                          "presets": [
                             ……
                          ],
                          // 開啟babel緩存
                          //第二次構(gòu)建時,會讀取之前的緩存
                          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: {
                          // 預(yù)設(shè):指示 babel 做怎么樣的兼容性處理
                          "presets": [
                             ……
                          ],
                          // 開啟babel緩存
                          //第二次構(gòu)建時,會讀取之前的緩存
                          cacheDirectory: true
                      }
                  }
              ],
          },
      

      配置開啟的多進程數(shù)量

      posted @ 2023-08-28 22:21  Eword  閱讀(497)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 上饶市| 中文字幕人妻在线精品| 蜜臀久久精品亚洲一区| 亚洲日韩中文字幕在线播放| 久久无码中文字幕免费影院| 亚洲AVAV天堂AV在线网阿V| 国产乱码精品一区二三区| 真实单亲乱l仑对白视频| 自拍视频亚洲精品在线| 人妻精品久久无码专区精东影业 | 岛国av无码免费无禁网站| 国语精品自产拍在线观看网站| 东台市| 极品蜜桃臀一区二区av| 国产播放91色在线观看| 性欧美欧美巨大69| 久久亚洲国产精品久久| 资中县| 国产99视频精品免费视频76| 亚洲精品无码久久一线| 99久re热视频这里只有精品6| 国产色无码专区在线观看| 久久88香港三级台湾三级播放| 97视频精品全国免费观看| 国产精品天天看天天狠| 欧美人与性囗牲恔配| 精品中文人妻中文字幕| 南京市| 国产精品成人自产拍在线| 久久亚洲av午夜福利精品一区| 综合色在线| 好吊视频一区二区三区人妖| 国产精品一二三中文字幕| 亚洲国产成人无码电影| 色婷婷av久久久久久久| 日韩精品久久久肉伦网站| 天天干天天色综合网| 国产99青青成人A在线| 国产福利一区二区三区在线观看| 国产欧美另类久久久精品不卡 | 日韩精品中文字幕一线不卡|