<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          使用 CI/CD 優(yōu)化前端構(gòu)建的五種策略

          共 4072字,需瀏覽 9分鐘

           ·

          2021-06-19 13:44

          如今使用 CI/CD 工具是網(wǎng)頁應(yīng)用程序開發(fā)的一個必要條件。作為關(guān)鍵開發(fā)路徑的一部分,加快構(gòu)建系統(tǒng)的速度對于提高開發(fā)人員的生產(chǎn)效率是至關(guān)重要的。

          • 原文地址:5 Strategies to Reduce Frontend Build Time with CI/CD
          • 原文作者:Bhagya Vithana
          • 譯文出自:掘金翻譯計劃
          • 本文永久鏈接:github.com/xitu/gold-m…
          • 譯者:Zz 招錦
          • 校對者:Kimhooo、KimYangOfCat

          如今使用 CI/CD 工具是網(wǎng)頁應(yīng)用程序開發(fā)的一個必要條件。作為關(guān)鍵開發(fā)路徑的一部分,加快構(gòu)建系統(tǒng)的速度對于提高開發(fā)人員的生產(chǎn)效率是至關(guān)重要的。

          因此,在這篇文章中,我們將帶你了解五種使用 CI/CD 優(yōu)化前端構(gòu)建時間的不同策略。

          1. 使用并行網(wǎng)絡(luò)包 Parallel-Webpack

          Parallel-Webpack 讓你能夠一邊運行一邊進行構(gòu)建應(yīng)用程序,以減少應(yīng)用程序構(gòu)建時間。

          你可以通過使用以下 NPM 命令輕松開始使用 Parallel-Webpack:

          npm install parallel-webpack —-save-dev
          復(fù)制代碼

          為了更好地了解 Parallel-Webpack 的配置,我們來看個簡單的示例。

          var path = require('path');
          module.exports = [{
            entry: './firstjob.js',
            output: {
              path: path.resolve(__dirname, './dist'),
             filename: 'task1.bundle.js'
            }
          }, 
          {
            entry: './secondjob.js',
            output: {
              path: path.resolve(__dirname, './dist'),
              filename: 'task2.bundle.js'
            }
          }];
          復(fù)制代碼

          上面的配置包括兩個獨立的構(gòu)建任務(wù),分別是 firstjobsecondjob。Parallel-Webpack 會同時運行這兩個構(gòu)建任務(wù),你會發(fā)現(xiàn) task1.bundle.jstask2.bundle.js 同時被構(gòu)建。

          Parallel-Webpack 允許你控制并行性,包括 Webpack 的普通功能,例如觀察者(watcher)和重傳限制(retry limit)。

          控制并行性

          有時,你可能想限制 Parallel-Webpack 可用的 CPU 核心數(shù)量。在這種情況下,你可以使用 parallel-webpack -p=2 命令指定可用的 CPU 核心數(shù)量。

          運行觀察者

          讓 Webpack 如此有影響力的功能之一是它的觀察者,它可以持續(xù)地重建你的應(yīng)用程序。你可以在 Parallel-Webpack 中毫不費力地使用同樣的功能,只要在命令中加入 watch 標(biāo)志即可。

          parallel-webpack --watch
          復(fù)制代碼

          同樣地,Parallel-Webpack 中有許多令人興奮的功能,可以集成到你的 CI/CD 管道中,以便加快它的速度。你也可以在文檔中找到更多有關(guān)信息。

          1. 將應(yīng)用程序拆分成微前端

          假設(shè)考慮傳統(tǒng)的單體前端系統(tǒng),它們中的大部分是只有一個構(gòu)建管道和一個發(fā)布管道。因此,如果有一個錯誤修復(fù)或新功能更新,就有可能破壞 CI/CD 管道中的整個構(gòu)建階段。

          然而,如果我們使用微前端,我們可以將應(yīng)用程序的功能拆分,并獨立維護應(yīng)用程序的構(gòu)建和發(fā)布管道,以便不斷提交更新和修復(fù)錯誤。

          通常,可以獨立地整合和部署每個應(yīng)用程序,讓你更快地修復(fù)重要功能。因此,這確實對 CI/CD 流程的提速有很大幫助。

          1. 組件驅(qū)動型 CI:Ripple CI

          組件驅(qū)動型 CI 是指只在修改過的組件和它們的所有依賴關(guān)系(即受影響的組件)上運行的 CI,它不把整個項目作為一個單獨實體。Ripple CI 的典型示例是 Bit。

          1. 優(yōu)化 Webpack 的性能

          我們通常使用 Webpack 的默認設(shè)置。然而,你是否知道如何通過使用插件和自定義配置進一步優(yōu)化它嗎?

          使用 uglifyjs-webpack-plugin v1 插件

          壓縮是指在你的網(wǎng)頁中壓縮代碼、標(biāo)記和腳本文件的過程。它是減少構(gòu)建時間的主要方法之一。

          但是,隨著項目規(guī)模的擴大,這個修改過程本身也會花費相當(dāng)多的時間。

          如果項目正在構(gòu)建,可以使用插件 uglifyjs-webpack-plugin v1 來優(yōu)化構(gòu)建時間。這個插件提供了多進程并行運行的能力和緩存支持,大大提升了構(gòu)建效率。

          在壓縮模塊的過程中使用加載器

          Webpack 使用加載器將其他類型的文件轉(zhuǎn)化為有效模塊。然后,這些模塊被應(yīng)用程序接收,并添加到依賴關(guān)系圖中。

          因此,必須指定相關(guān)的文件目錄,以減少不必要的模塊加載。

          在 Webpack 配置中,你可以通過 include 選項輕松指定文件目錄。

          const path = require('path');

          module.exports = {
            
            module: {
              rules: [
                {
                  test: /\.js$/,
                  include: path.resolve(__dirname, 'src'),
                  loader: 'css-loader',
                },
              ],
            },
          };
          復(fù)制代碼

          1. NPM 模塊安裝的管道緩存

          我們都知道,安裝節(jié)點模塊需要耗費時間。我們發(fā)現(xiàn)了這個問題,特別是在管道中耗費更多時間,因為它們每次運行都會安裝節(jié)點模塊。

          NPM 緩存是一種簡單的緩存機制,我們可以在構(gòu)建管道中使用,以避免每次都運行 npm 安裝。

          這種緩存機制將使你的構(gòu)建管道與你的本地開發(fā)環(huán)境相似。你只需要安裝一次節(jié)點模塊,同樣的模塊將被用于后續(xù)的構(gòu)建。

          例如,讓我們來看一個 NodeJS 項目的 Azure DevOps 管道。

          為 NodeJs 項目緩存 NPM 模塊的最推薦方式是使用 NPM 的共享緩存目錄。這個目錄包括所有下載模塊的緩存版本。每當(dāng)我們運行 npm install 命令時,NPM 會首先檢查這個目錄,并在其中獲取存儲的包。

          示例代碼

          variables: 
          npm_config_cache: $(Pipeline.Workspace)/.npm 

          steps: 
          — task: Cache@2 
            inputs: 
              key: ‘npm | “$(Agent.OS)” | package-lock.json’ 
              restoreKeys: | 
                npm | “$(Agent.OS)” 
              path: $(npm_config_cache) 
            displayName: Cache npm

          — script: npm ci
          復(fù)制代碼

          本文總結(jié)

          正如你已經(jīng)了解到的,有五種技術(shù)可以加快前端應(yīng)用程序的構(gòu)建時間。此外,還有許多其他技術(shù)可能適合技術(shù)開發(fā)和工作流程。你應(yīng)該選擇適合用例的方法。

          同時,我希望這里的討論能幫助你理解以上策略,以加快 CI/CD 流程的前端構(gòu)建時間。

          感謝你的閱讀!

          如果發(fā)現(xiàn)譯文存在錯誤或其他需要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改并 PR,也可獲得相應(yīng)獎勵積分。文章開頭的 本文永久鏈接 即為本文在 GitHub 上的 MarkDown 鏈接。


          最后





          如果你覺得這篇內(nèi)容對你挺有啟發(fā),我想邀請你幫我三個小忙:

          1. 點個「在看」,讓更多的人也能看到這篇內(nèi)容(喜歡不點在看,都是耍流氓 -_-)

          2. 歡迎加我微信「huab119」拉你進技術(shù)群,長期交流學(xué)習(xí)...

          3. 關(guān)注公眾號「前端勸退師」,持續(xù)為你推送精選好文,也可以加我為好友,隨時聊騷。




          點個在看支持我吧,轉(zhuǎn)發(fā)就更好了


          瀏覽 59
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产像蕉9 | 黄色免费网站在线看 | 精品免费国产一区二区三区四区的使用方法 | 臭小子啊轻点灬太粗太长了的视频 | 婷婷黄色网 |