本文適用於 EDOCODE 2024 年降臨節日曆,於 2024 年 12 月 16 日發布。
上一篇文章由 EDOCODE 產品經理 Taiji Yamada 撰寫:使用 Notion Webhooks 和無代碼工具「Make」的自動化電子郵件系統(文章為日文)。
另外,請查看我們母公司集團公司的和之降臨節日曆!
我們的應用程式 Gojiberry 是一款 Shopify 調查應用程序,可幫助商家從客戶那裡收集有價值的回饋。
從一開始,我們就透過測試驅動開發 (TDD) 來建立 Gojiberry,以確保我們的應用程式沒有錯誤,並且我們可以在不破壞現有功能的情況下自信地發布新功能。這個基礎使我們能夠進行大規模的更改,例如從 Create React App (CRA) 遷移到 Vite,同時將幹擾降至最低。
當 CRA 被棄用並且它的依賴項變得過時時,我們決定是時候升級到現代構建工具,以更好地支援我們不斷增長的應用程式。我們的程式碼庫規模較大,增加了一些複雜性,但事實證明,轉向 Vite 的努力是值得的。
我們的目標是遷移我們的兩個 React 專案:
如果您是 Shopify 店主,希望收集可行的客戶回饋,請立即在 Shopify 應用程式商店中試用 Gojiberry!
CRA 過去為我們提供了很好的服務,但它不再被維護,而且它的依賴項也已經過時了。這帶來了一些挑戰:
使用者事件 v14 中最大的改進之一是要求對所有互動方法使用 wait。這消除了在await waitFor 中包裝操作的需要,使測試程式碼更乾淨且更易於維護。
之前(使用者事件 v13):
import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import MyComponent from './MyComponent'; test('updates state on click', async () => { render(<MyComponent />); userEvent.click(screen.getByRole('button')); await waitFor(() => { expect(screen.getByText('Updated state')).toBeInTheDocument(); }); });
之後(使用者事件 v14):
import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import MyComponent from './MyComponent'; test('updates state on click', async () => { render(<MyComponent />); userEvent.click(screen.getByRole('button')); await waitFor(() => { expect(screen.getByText('Updated state')).toBeInTheDocument(); }); });
此更改無需使用 waitFor 明確管理狀態更改,從而簡化了測試。開發人員不再需要考慮何時包含await waitFor,因為程式庫會自動處理它。
使用者事件 v14 和 Vitest 的改進解決了其中許多問題,提供了更乾淨、更快、更一致的開發體驗。
在選擇 Vite 之前,我們評估了 Next.js 和 Remix。雖然兩者都是強大的框架,但它們需要對我們的程式碼庫和基礎設施進行重大更改:
Next.js 和 Remix:
為什麼我們選Vite:
透過選擇 Vite,我們避免了採用成熟框架的複雜性,同時獲得了現代輕量級建構工具的好處。
我們有系統地進行了遷移,因為我們的 monorepo 包含兩個獨立的 npm 專案。以下是我們執行遷移的方式:
從較小的專案開始:
遷移步驟:
每個專案的流程都遵循以下步驟:
對更大的項目重複:
從 CRA 遷移到 Vite,以及向 Vitest 和用戶事件 v14 的過渡,為我們的開發工作流程帶來了重大改進:
遷移改變了遊戲規則,使我們能夠更快地迭代,同時保持對程式碼庫的信心。
以下是我們的一些經驗總結:
從 CRA 遷移到 Vite 和 Vitest 為我們的工作流程帶來了顯著改進。現在,由於更嚴格的 TypeScript 規則,我們可以享受更快的建置、具有使用者事件 v14 的更乾淨的測試程式碼以及更具彈性的程式碼庫。
使這一過渡更加順利的關鍵因素之一是我們對測試驅動開發 (TDD) 的早期投資。透過一套全面的測試,我們能夠自信地進行大規模更改,而不會破壞現有功能。
如果您正在考慮進行類似的遷移,我們希望我們的經驗能夠提供寶貴的見解來引導您的旅程。
明天,2024 年 12 月 17 日,這篇文章將是 從 B2C 轉向 B2B:行銷人員的自白,作者:Gojiberry 產品行銷經理 Amee Xu。
和之集團,我們正在招募!如果您有興趣,請使用以下連結查看我們的空缺職位:
工作機會 |和之集團
以上是從 React CRA 和 Jest 遷移到 Vite 和 Vitest 的經驗教訓的詳細內容。更多資訊請關注PHP中文網其他相關文章!