自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Monorepos可能很痛苦,但這些工具讓你的工作更輕松

開發(fā) 開發(fā)工具
使用正確的工具集,管理 monorepos 變得更加易于管理和愉快。Bit的組件驅(qū)動開發(fā)(CDD)方法將代碼庫分解為可重用的組件,促進(jìn)模塊化,獨立開發(fā),協(xié)作和高效的依賴關(guān)系管理。

原文作者:Fernando Doglio

原文地址:https://itnext.io/the-3-best-monorepo-tools-for-2023-290bd4be8f0b

翻譯:一川

如果沒有正確的工具集,管理 monorepos 通常是一項具有挑戰(zhàn)性的任務(wù)。

在單個存儲庫中協(xié)調(diào)多個項目的復(fù)雜性可能會導(dǎo)致以下問題:

  • 開發(fā)人員的困惑和維護(hù)難題。
  • 不需要的組件的耦合。
  • 發(fā)展團(tuán)隊和項目的復(fù)雜性。
  • 部署難題。
  • 難以單獨對組件進(jìn)行版本控制,允許它們僅在需要時部署它們。

幸運的是,有一些工具可以簡化單存儲庫的管理并增強開發(fā)體驗。

在本文中,我們將探討開發(fā)人員可以用來有效處理 monorepos 的前三個工具。每個工具都為常見的單存儲庫問題提供獨特的功能和解決方案。讓我們深入了解這些工具如何簡化您的monorepo管理流程。

RushJS

訪問地址:https://rushjs.io/

RushJS是一個強大的工具,專門設(shè)計用于簡化monorepos的管理。它提供了一組正確的功能和命令,使開發(fā)人員能夠有效地處理與在單個存儲庫中處理多個項目相關(guān)的挑戰(zhàn)。

通過提供高效的依賴關(guān)系管理、優(yōu)化的構(gòu)建、增強的可擴(kuò)展性和改進(jìn)的開發(fā)人員體驗,RushJS 使團(tuán)隊能夠輕松駕馭 monorepo 開發(fā)的復(fù)雜性。

最重要的是,RushJS是由Microsoft構(gòu)建的,這在當(dāng)今往往意味著什么。因此,讓我們來看看如何使用它來解決我們的 Monorepo 頭痛問題。

安裝 RushJS

要安裝RushJS,您所要做的就是使用NPM:

npm install -g @microsoft/rush

然后只需在當(dāng)前項目的文件夾上運行 rush init 即可開始工作。

RushJS的基本用途

正確安裝和配置RushJS后,讓我們快速回顧一下如何在日常工作中使用它。

使用Rush,您需要記住兩個命令: rush 和 rushx。您將用于 rush 所有monorepo級別的操作,例如更新所有依賴項 ( rush update ) 或使用 構(gòu)建 rush rebuild 整個項目列表。

然后,您將用于 rushx 特定于項目的命令。例如,使用 rush rebuild 構(gòu)建一個項目后啟動該項目,您可以使用:

cd my-project
my-project> rushx start

理解RushJS的關(guān)鍵是它是為JavaScript monorepos設(shè)計的??雌饋砟銜ㄟ^在存儲庫的根部放置大量 package.json 內(nèi)容來做同樣的事情,但 Rush 并非如此。相反,它使用一組符號鏈接來保持所有項目的更新并同時分開。

如果你正在構(gòu)建一個JavaScript項目,在其中開發(fā)大量單獨的npm包,使用RushJS絕對是一個值得的選擇。

Turborepo

Turborepo是一個強大的工具,專門設(shè)計用于簡化monorepos的管理。它提供了一系列特性和功能,可幫助開發(fā)人員克服與在單個存儲庫中處理多個項目相關(guān)的挑戰(zhàn)。通過提供高效的項目組織、增強的開發(fā)工作流程和優(yōu)化的構(gòu)建,Turborepo 使團(tuán)隊能夠有效地處理單存儲庫的復(fù)雜性。

Turborepo的關(guān)鍵在于它的名字,更準(zhǔn)確地說是“turbo”部分。該工具的主要賣點是它使您的工作流程運行得更快。它通過將緩存添加到過程中來實現(xiàn)。源代碼文件將充當(dāng)哈希函數(shù)的輸入,輸出將是日志文件和 stderr 輸出。

也就是說,如果在只有少數(shù)文件發(fā)生更改的情況下運行構(gòu)建或測試運行,則該過程將只關(guān)注它們,其余文件將從緩存中獲取。

在實踐中,這意味著構(gòu)建速度非??欤绕涫且坏╉椖宽樌M(jìn)行并且您只是在推動微小的更改或新功能。

安裝Turborepo

訪問地址:https://turbo.build/repo

安裝 Turborepo 非常簡單,您所要做的就是使用 npm(劇透警報,您還將在下一個工具中使用 NPM):

npm install turbo -g

然后,您可以簡單地進(jìn)入monorepo中的項目文件夾,并運行如下命令:

cd monorepo/project1
turbo build

或者,如果您已經(jīng)有一個項目并且想要向其添加 Turborepo,請在根級別創(chuàng)建一個turbo.json文件。對于 NextJS 項目,請使用如下配置:

{
  "$schema": "https://turbo.build/schema.json",
  "pipeline": {
    "build": {
      "outputs": [".next/**", "!.next/cache/**"]
    },
    "lint": {}
  }
}

查看他們的文檔[https://turbo.build/repo/docs/getting-started/add-to-project],了解如何為其他框架配置它。

Turborepo的基本使用方法

正確安裝和配置 Turborepo 后,讓我們探索它在 monorepo 環(huán)境中的基本用法:

項目組織

Turborepo提供了在monorepo中組織項目的有效方法。它允許您定義項目邊界、管理共享依賴項以及維護(hù)不同項目之間的明確分離。使用 Turborepo,您可以在 monorepo 中創(chuàng)建單獨的項目目錄,并指定每個項目所需的依賴項。這實現(xiàn)了模塊化和可擴(kuò)展的結(jié)構(gòu),從而可以更輕松地管理和維護(hù)代碼庫。Turborepo 還提供用于添加、刪除和更新項目的命令,確保在 monorepo 中進(jìn)行簡單的項目管理。

簡化的開發(fā)工作流程

Turborepo 簡化了開發(fā)工作流程,可以更輕松地同時處理多個項目。它引入了智能緩存等功能,其中利用以前構(gòu)建的工件來減少構(gòu)建時間。通過智能跟蹤更改和重用構(gòu)建的工件,Turborepo 消除了冗余構(gòu)建,節(jié)省了寶貴的開發(fā)時間。開發(fā)人員可以通過使用命令turbo build來利用緩存機(jī)制,例如僅生成受代碼更改影響的必要組件。這種優(yōu)化提高了開發(fā)速度,尤其是在處理具有互連項目的大型單存儲庫時。

依賴關(guān)系管理

Turborepo簡化了單存儲庫中依賴關(guān)系的管理。它提供了一種跨項目處理依賴項的統(tǒng)一方法,確保一致且高效的解決方案。Turborepo 利用共享依賴項模型,允許您聲明可在多個項目之間共享的公共依賴項。這消除了跨項目重復(fù)依賴項的需要,從而降低了版本沖突的風(fēng)險并確保了一致性。Turborepo 智能地解析依賴關(guān)系,確保為monorepo中的每個項目安裝正確的版本。

優(yōu)化構(gòu)建

Turborepo 通過智能識別和僅構(gòu)建受代碼更改影響的必要組件來優(yōu)化構(gòu)建過程。這種增量構(gòu)建機(jī)制顯著縮短了構(gòu)建時間,使開發(fā)人員能夠更快地迭代。Turborepo 跟蹤單存儲庫中的更改并執(zhí)行選擇性構(gòu)建,僅重建受代碼修改影響的項目或組件。這種精細(xì)的方法最大限度地減少了構(gòu)建開銷,并確保開發(fā)人員可以專注于他們正在處理的代碼庫的特定部分。通過利用優(yōu)化的構(gòu)建,開發(fā)人員可以加快開發(fā)周期并提高生產(chǎn)力。

協(xié)作和版本控制

Turborepo 提供的功能可促進(jìn)單存儲庫設(shè)置中的協(xié)作和版本控制。它支持項目之間的高效代碼共享,允許團(tuán)隊在保持明確邊界的同時處理共享組件。Turborepo 通過提供用于在monorepo中創(chuàng)建分支、合并更改和解決沖突的命令來實現(xiàn)協(xié)作開發(fā)。它還與 Git 等版本控制系統(tǒng)很好地集成,確保有效管理更改和版本歷史記錄。借助 Turborepo,團(tuán)隊可以無縫協(xié)作,增強協(xié)作并在 monorepo 中實現(xiàn)高效的版本控制。

通過利用Turborepo的基本使用功能,開發(fā)人員可以簡化其 monorepo 工作流程、提高開發(fā)速度并保持代碼質(zhì)量。其直觀的命令和優(yōu)化的流程使其成為有效管理 monorepos、促進(jìn)無縫協(xié)作和提高整體生產(chǎn)力的寶貴工具。

bit

訪問地址:https://bit.dev/

Bit實際上不是一個單存儲庫管理工具,但它提供了如此出色的體驗,以至于它可以通過它提供的新工作流程解決所有Monorepo“困難”。

管理 monorepos 的主要挑戰(zhàn)之一是保持代碼模塊化,同時確保高效的協(xié)作和代碼重用。Bit通過組件驅(qū)動開發(fā)(CDD)正面解決了這一挑戰(zhàn)。

CDD將組件置于開發(fā)過程的中心。開發(fā)人員不是從項目或文件的角度來思考,而是專注于創(chuàng)建自包含的、可重用的組件。組件表示可在 monorepo 中的多個項目中使用的特定功能、UI 元素或邏輯。通過采用以組件為中心的方法,Bit 提高了代碼模塊化和可重用性。

安裝Bit

安裝Bit就像編寫一樣簡單:

npx @teambit/bvm install

如果您想要更多安裝選項,可以查看他們的文檔站點[https://bit.dev/docs/getting-started/installing-bit/installing-bit/]。

安裝后,您可以通過以下方式開始在項目中使用它:

bit init

然后,您可以開始創(chuàng)建工作區(qū),這是一個花哨的詞,表示您將在其中添加組件的文件夾。

每個組件都是使用 Bit創(chuàng)建的,這有助于“正確”設(shè)置所有內(nèi)容:

  • 它們將在不同的文件夾中獨立管理。
  • 他們將在代碼文件旁邊創(chuàng)建測試和文檔模板。
  • 您將能夠單獨對它們進(jìn)行版本控制。
  • 這反過來又使發(fā)布它們和重用它們變得非常簡單。

Bit 的基本用法

理解為什么Bit是monorepos的絕佳選擇的關(guān)鍵,即使它不是特定于monorepo的工具,因為它提供的DX(開發(fā)人員體驗)與對組件驅(qū)動開發(fā)的支持相結(jié)合。

讓我解釋一下。

使用 Bit,您將不會擁有 monorepo,但您會覺得您正在使用實際的 monorepo。

我知道一開始很難理解,所以讓我舉個例子。

假設(shè)一個由多個 UI 組件(如按鈕、輸入字段和卡片)組成的項目。傳統(tǒng)上,在 monorepo 設(shè)置中,所有這些組件將駐留在單個存儲庫中,從而導(dǎo)致大型而復(fù)雜的代碼庫。但是,使用 Bit,開發(fā)人員可以將這些組件分解為單獨的實體,每個實體都有自己的開發(fā)生命周期。

通過這個詳細(xì)的教程[https://bit.dev/blog/how-to-create-a-composable-react-app-with-bit-l7ejpfhc/]了解如何在 React通過bit 創(chuàng)建可組合的應(yīng)用程序,了解如何做到這一點。

初始化組件

首先,開發(fā)人員可以使用Bit的命令行界面(CLI)將每個組件初始化為單獨的實體。例如,他們可以對按鈕組件運行以下命令:

bit create react components/button

此命令初始化項目中的按鈕組件,創(chuàng)建專用目錄(如 components/button ),并設(shè)置特定于按鈕組件的必要文件和依賴項。

這意味著您的 node_modules 文件夾將有一個指向新組件文件夾的新符號鏈接,這使得從 monorepo 代碼中的任何位置導(dǎo)入和使用它變得非常簡單。

獨立開發(fā)組件

使用 Bit,開發(fā)人員可以獨立處理每個組件,就像它是一個獨立的項目一樣。他們可以專門針對組件進(jìn)行更改、添加功能和運行測試,而不會影響其他 button 組件或整個項目。例如,您可以將其代碼更改為如下所示:

// components/button/Button.js
import React from 'react';
const Button = ({ label }) => {
  return <button>{label}</button>;
};
export default Button;

開發(fā)人員可以迭代地優(yōu)化和改進(jìn)組件,編寫特定于button組件的測試和文檔。Bit 使開發(fā)人員能夠?qū)W⒂诟鱾€組件及其功能,同時保持清晰的分離和模塊化。

共享和重用組件

Bit 的強大方面之一是能夠跨不同的項目或存儲庫共享和重用組件。開發(fā)人員可以使用以下命令將組件發(fā)布到共享 button 組件庫:

bit export components/button

(當(dāng)然,您必須首先運行才能對 bit tag 組件進(jìn)行版本控制)。

此命令發(fā)布button組件,使其可供其他開發(fā)人員導(dǎo)入并在自己的項目中使用。

這有效地將單個組件的代碼推送到外部存儲庫(來自 Bit)中,這在理論上打破了整個monorepo概念。但是,作為開發(fā)人員,這對您來說是完全透明的,這是最好的部分。

其他開發(fā)人員可以通過簡單的導(dǎo)入語句安裝和使用該 button 組件:

import Button from '@my-company/button';

盡管在傳統(tǒng)的 monorepo 結(jié)構(gòu)中沒有所有組件,但開發(fā)人員可以無縫地導(dǎo)入和使用組件,就好像它們是 monorepo 的一部分一樣。Bit負(fù)責(zé)管理依賴關(guān)系并確保版本一致性,為開發(fā)人員提供類似monorepo的體驗。

增強的代碼模塊化

使用 Bit的CDD方法,您可以將monorepo分解為單獨的獨立組件。這些組件封裝了特定的功能或 UI 元素,從而實現(xiàn)了更加模塊化的代碼庫。通過促進(jìn)代碼模塊化,Bit幫助開發(fā)人員創(chuàng)建可重用的組件,這些組件可以在monorepo中的不同項目之間輕松共享和集成。

隔離和獨立開發(fā)

Bit 使開發(fā)人員能夠獨立處理組件。每個組件都可以有自己的開發(fā)環(huán)境,從而更容易專注于特定的特性或功能。這種隔離降低了意外副作用的風(fēng)險,并使測試和調(diào)試更加高效。借助 Bit,您可以獨立開發(fā)、測試和迭代組件,從而加快開發(fā)過程并提高代碼質(zhì)量。

無縫協(xié)作

Bit 通過提供用于共享和重用組件的集中式中心(Bit.cloud),簡化了處理 monorepo 的開發(fā)人員之間的協(xié)作。使用 Bit的CDD,開發(fā)人員可以將組件發(fā)布到共享組件庫或Bit 注冊表。這使其他開發(fā)人員可以輕松地在自己的項目中發(fā)現(xiàn)、導(dǎo)入和使用這些組件。Bit的內(nèi)置版本控制確保組件可以在monorepo之間更新和共享而不會發(fā)生沖突。了解更多信息。

高效的文檔和測試

Bit的CDD方法鼓勵開發(fā)人員將組件作為單獨的實體進(jìn)行文檔和測試。文檔和測試與每個組件緊密集成,使開發(fā)人員更容易理解其用途、API 和用法。Bit 允許您獨立生成文檔并為每個組件運行測試,從而確保代碼庫的質(zhì)量和可靠性。這種以文檔為中心的方法提高了代碼的可維護(hù)性,并促進(jìn)了開發(fā)團(tuán)隊內(nèi)的知識共享。如果您想了解有關(guān)為 Bit 組件編寫文檔的更多信息,請查看其文檔中的此頁面。

事實上,如果你看一下 Bit.cloud 上的組件,你會得到這樣的東西。

圖片圖片

在那里,您可以獲得很多信息,例如有關(guān)組件的基本統(tǒng)計信息,以及您可以修改的實時代碼示例。它還具有渲染 Markdown 的能力,因此您可以使用它解釋所需的一切。

粒度版本控制和依賴項管理

Bit 支持對 monorepo 中的組件進(jìn)行精細(xì)版本控制。每個組件都可以有自己的版本,從而可以精確控制更新和依賴項。Bit 自動處理組件依賴項的解析,確??珥椖渴褂谜_的版本。這消除了版本沖突并簡化了 monorepo 中的依賴項管理。

要了解更多信息,請閱讀本文[https://bit.dev/blog/painless-monorepo-dependency-management-with-bit-l4f9fzyw/]。

或者,您可以查看此視頻:https://youtu.be/Z2kPUlLynzU

總之,Bit解決了monorepos帶來的所有問題,并增加了一些其他好處。正如您所看到的,上面的列表涵蓋了monorepo方法可能具有的所有“但是”。

請記住,對于Bit,您只會認(rèn)為您正在處理Monorepo,但是在幕后,您并非如此。

如果您考慮將 Bit 添加到現(xiàn)有和已建立的單存儲庫中的場景,這將特別有趣。您將使用 Bit 單獨提取每個組件,記錄它們,對它們進(jìn)行版本控制并在 Bit.cloud 的幫助下共享它們。有效地將單存儲庫分解為單個組件大小的存儲庫。但所有這些都會發(fā)生,你甚至不關(guān)心它。

寫在最后

使用正確的工具集,管理 monorepos 變得更加易于管理和愉快。Bit的組件驅(qū)動開發(fā)(CDD)方法將代碼庫分解為可重用的組件,促進(jìn)模塊化,獨立開發(fā),協(xié)作和高效的依賴關(guān)系管理。

Turborepo 提供性能優(yōu)化,如并行構(gòu)建和增量測試,簡化大規(guī)模項目開發(fā)。RushJS為單存儲庫管理提供了一個全面的工具包,確保一致的項目結(jié)構(gòu),版本兼容性和高效的依賴關(guān)系處理。借助這些工具,開發(fā)人員可以有效地應(yīng)對monorepo挑戰(zhàn),從而提高生產(chǎn)力和代碼質(zhì)量。

通過利用Bit,Turborepo或RushJS,您也可以簡化工作流程。無論是Bit以組件為中心的方法,Turborepo的性能優(yōu)化,還是RushJS的綜合工具包,每個工具都帶來了獨特的功能和優(yōu)勢。

采用這些工具,嘗試工作流程,并為您的團(tuán)隊找到正確的方法。Monorepo 管理不一定是一種痛苦——它可以是一種有益的體驗,可以促進(jìn)協(xié)作、代碼重用和高效開發(fā)。

享受編碼,愿您的monorepo之旅取得成功!

責(zé)任編輯:武曉燕 來源: 宇宙一碼平川
相關(guān)推薦

2025-03-18 14:33:14

2022-11-07 16:25:07

JavaScript技巧

2023-06-02 15:53:38

工具Python開發(fā)

2023-07-24 16:53:14

人工智能工作量翻倍

2010-12-23 15:55:00

上網(wǎng)行為管理

2011-07-19 10:16:55

2016-11-14 10:23:08

Hadoop工具大數(shù)據(jù)數(shù)據(jù)倉庫

2020-06-28 16:07:03

HomebrewMacLinux

2020-11-23 09:21:09

開源項目

2015-06-01 10:48:00

虛擬機(jī)云計算云就緒

2021-12-27 10:07:22

Windows 11復(fù)制文件文件夾

2018-09-20 18:23:49

人工智能AI

2016-11-16 13:34:41

Hadoop數(shù)據(jù)倉庫

2021-03-03 08:02:13

JavaScript函數(shù)字節(jié)

2021-08-19 17:21:48

Windows微軟工具

2011-03-28 17:55:54

Root Tools隨意改Android開發(fā)工具

2015-11-05 08:59:19

編程Visual Stud擴(kuò)展

2011-04-02 10:13:36

Linux系統(tǒng)管理

2024-09-18 15:58:05

點贊
收藏

51CTO技術(shù)棧公眾號