Artikel ini adalah untuk EDOCODE Advent Calendar 2024, diterbitkan pada 16 Disember 2024.
Artikel sebelum ini ditulis oleh Taiji Yamada, Pengurus Produk di EDOCODE: Sistem E-mel Automatik Menggunakan Notion Webhooks dan Alat Tanpa Kod "Buat" (Artikel itu dalam bahasa Jepun).
Juga, sila lihat Kalendar Kedatangan Wano oleh syarikat kumpulan induk kami!
Apl kami, Gojiberry, ialah apl tinjauan Shopify yang membantu pedagang mengumpulkan maklum balas berharga daripada pelanggan mereka.
Dari awal lagi, kami telah membina Gojiberry dengan pembangunan dipacu ujian (TDD) untuk memastikan apl kami bebas pepijat dan kami boleh mengeluarkan ciri baharu dengan yakin tanpa melanggar fungsi sedia ada. Yayasan ini telah membolehkan kami membuat perubahan besar-besaran, seperti berhijrah daripada Create React App (CRA) ke Vite, dengan gangguan yang minimum.
Apabila CRA telah ditamatkan, dan kebergantungannya menjadi lapuk, kami memutuskan sudah tiba masanya untuk meningkatkan kepada alat binaan moden yang lebih baik menyokong apl kami yang semakin berkembang. Saiz besar pangkalan kod kami menambahkan sedikit kerumitan, tetapi peralihan kepada Vite terbukti berbaloi dengan usaha.
Matlamat kami adalah untuk memindahkan dua projek React kami:
Jika anda seorang pemilik kedai Shopify yang ingin mengumpulkan maklum balas pelanggan yang boleh diambil tindakan, cuba Gojiberry hari ini di Kedai Apl Shopify!
CRA memberi perkhidmatan yang baik kepada kami pada masa lalu, tetapi ia tidak lagi dikekalkan dan kebergantungannya telah menjadi lapuk. Ini menimbulkan beberapa cabaran:
Salah satu peningkatan terbesar dalam acara pengguna v14 ialah keperluan untuk menggunakan menunggu untuk semua kaedah interaksi. Ini menghapuskan keperluan untuk tindakan membalut dalam wait waitFor, menjadikan kod ujian lebih bersih dan lebih mudah diselenggara.
Sebelumnya (peristiwa pengguna 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(); }); });
Selepas (peristiwa pengguna 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(); }); });
Perubahan ini memudahkan ujian dengan mengalih keluar keperluan untuk mengurus perubahan keadaan secara eksplisit dengan waitFor. Pembangun tidak perlu lagi memikirkan masa untuk menyertakan tunggu waitFor, kerana perpustakaan mengendalikannya secara automatik.
Peningkatan dalam acara pengguna v14 dan Vitest menangani banyak isu ini, menawarkan pengalaman pembangunan yang lebih bersih, lebih pantas dan lebih konsisten.
Sebelum memilih Vite, kami menilai Next.js dan Remix. Walaupun kedua-duanya adalah rangka kerja yang berkuasa, ia memerlukan perubahan ketara pada asas kod dan infrastruktur kami:
Next.js dan Remix:
Mengapa kami memilih Vite:
Dengan memilih Vite, kami mengelakkan kerumitan menggunakan rangka kerja lengkap sambil meraih faedah alat binaan moden yang ringan.
Kami menghampiri migrasi secara sistematik kerana monorepo kami mengandungi dua projek npm yang berasingan. Begini cara kami melaksanakan migrasi:
Mulakan dengan projek yang lebih kecil:
Langkah migrasi:
Proses untuk setiap projek mengikut langkah berikut:
Ulang untuk projek yang lebih besar:
Penghijrahan daripada CRA ke Vite, bersama-sama dengan peralihan kepada Vitest dan acara pengguna v14, telah memberikan peningkatan yang ketara kepada aliran kerja pembangunan kami:
Penghijrahan telah menjadi pengubah permainan, membolehkan kami mengulang lebih pantas sambil mengekalkan keyakinan dalam pangkalan kod kami.
Berikut ialah beberapa iktibar daripada pengalaman kami:
Berhijrah dari CRA ke Vite dan Vitest telah membawa peningkatan yang ketara kepada aliran kerja kami. Kini kami menikmati binaan yang lebih pantas, kod ujian yang lebih bersih dengan acara pengguna v14 dan pangkalan kod yang lebih berdaya tahan berkat peraturan TypeScript yang lebih ketat.
Salah satu faktor utama yang menjadikan peralihan ini lebih lancar ialah pelaburan awal kami dalam pembangunan dipacu ujian (TDD). Dengan set ujian yang komprehensif disediakan, kami dapat membuat perubahan besar-besaran dengan yakin tanpa melanggar fungsi sedia ada.
Jika anda mempertimbangkan penghijrahan yang serupa, kami berharap pengalaman kami memberikan cerapan berharga untuk membimbing perjalanan anda.
Esok, 17 Disember 2024, artikel itu akan Bertukar daripada B2C kepada B2B: pengakuan pemasar oleh Amee Xu, Pengurus Pemasaran Produk di Gojiberry.
Di Kumpulan Wano, kami sedang mengambil pekerja! Jika anda berminat, sila lihat jawatan terbuka kami menggunakan pautan di bawah:
PEKERJAAN | Kumpulan Wano
Atas ialah kandungan terperinci Pengajaran yang Dipetik Berhijrah daripada React CRA & Jest kepada Vite & Vitest. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!