Dự án Ledger Live Monorepo: Phần 2 - Các công cụ (Make it Shine) | Sổ cái

Dự án Ledger Live Monorepo: Phần 2 – Các công cụ (Make it Shine) | Sổ cái

Nút nguồn: 2985172

Mục thứ hai của loạt bài đăng trên blog “Dự án Ledger Live Monorepo”, trong đó một nhà phát triển Ledger kể cho chúng ta câu chuyện về quá trình di chuyển khổng lồ của cơ sở mã Ledger Live sang một kho lưu trữ đơn. Nếu bạn bỏ lỡ phần 1, hãy xem lại tại đây:

Sau khi xác định rằng kiến ​​trúc monorepo là một giải pháp khả thi, chúng tôi bắt đầu xem xét các công cụ có sẵn để thực hiện kế hoạch của mình.

Xử lý nhiều dự án

Trong nhóm Ledger Live, chúng tôi điều hướng trong hệ sinh thái JavaScript và may mắn thay cho chúng tôi, chúng tôi đã biết một số cách để xử lý nhiều dự án bằng trình quản lý gói của mình. Một số giải pháp khả thi bao gồm:

  • NPM (có hỗ trợ cho không gian làm việc nhưng có lựa chọn thay thế tốt hơn),
  • Sợi 1 (trở nên quá cũ, các lựa chọn thay thế tốt hơn và hiệu quả hơn),
  • Sợi ≥ 2 (ý tưởng thú vị, nhưng plug and play không được hỗ trợ tốt ở mọi nơi, đặc biệt là với React Native),
  • PNPM (liên kết tượng trưng, ​​​​được xây dựng dành cho không gian làm việc, đĩa hiệu quả).

Sau khi xem xét tất cả những điều này, chúng tôi quyết định đi cùng PNPM cho:

  • hiệu quả của đĩa (nó sử dụng ảo hàngliên kết tượng trưng, vì vậy các gói chỉ được tải xuống một lần sau đó được liên kết tượng trưng với node_modules của bạn từ cửa hàng ảo),
  • tốc độ (vì các gói được lưu vào bộ nhớ đệm nên các lần cài đặt tiếp theo sẽ nhanh hơn nhiều),
  • được xây dựng để hỗ trợ cho không gian làm việc/kiến trúc monorepo (bí danh, điều phối, v.v.).

Trên giấy PNPM thực sự là một viên ngọc quý, nhưng các liên kết tượng trưng hơi kỳ quặc để thiết lập chính xác (một lần nữa, đặc biệt với React Native).

Được rồi, vậy là chúng ta đã lựa chọn xong, chúng ta sẽ chọn PNPM.

Biên soạn kịch bản

Mặc dù PNPM ngày càng thêm nhiều sự phối hợp vào các tính năng của nó, nhưng nó vẫn không bao gồm mọi thứ chúng tôi muốn làm, chẳng hạn như:

  • xây dựng tuần tự,
  • bộ nhớ đệm.

Đối với những điều này, chúng tôi đã tìm thấy hai ứng cử viên thú vị mà chúng tôi cần xem xét:

  • NX (bởi nhóm góc cạnh),
  • tuabin (vừa công bố phiên bản v1.0.0 khi chúng tôi bắt đầu phát triển nó và hiện đang làm việc với nhóm Vercel).

Chúng tôi đã thực hiện một bằng chứng về khái niệm trên cả hai.

NX có nhiều tính năng hơn, trình tạo, tự động hóa, biểu đồ phụ thuộc tuyệt vời, v.v... nhưng, nó bổ sung thêm rất nhiều chi phí và vì nó khá cố chấp nên chúng tôi sẽ phải tuân theo các quy ước của chúng.

tuabin mặt khác, đây là tính năng khá cơ bản. Tuy nhiên, đó là một giải pháp cắm và chạy tiện lợi mà chúng tôi có thể thay đổi rất nhanh nếu cần.

Mặc dù tuabin có ít tính năng hơn NX, nó đã làm được 2 việc mà chúng tôi đang tìm kiếm:

  • Điều phối các bản dựng tôn trọng cây phụ thuộc (và các bản dựng đồng thời),
  • Bộ nhớ đệm (các bản dựng được lưu vào bộ nhớ đệm và 'phát lại' nếu mã của chúng không thay đổi).

Điều đó, cộng với việc dễ dàng vào/ra, đã khiến chúng tôi chọn đứa trẻ mới vào khối, TurboRepo.

Phiên bản

Chúng tôi cũng đã xem xét một số giải pháp nhưng cuối cùng quyết định sử dụng https://github.com/changesets/changesets vì đây là một công cụ mà TurboRepo khuyên dùng và sau khi đọc tài liệu một chút, dường như nó đã đáp ứng được nhu cầu của chúng tôi.

Các nhà phát triển sẽ cần phải nghiêm ngặt hơn một chút trong quy trình phát triển của mình và cung cấp changesets (tệp mô tả thư viện nào mã của họ thay đổi, mức độ nghiêm trọng sau gieo quy ước và mô tả sự thay đổi). Những cái này changesets sau đó được sử dụng để tự động điều chỉnh phiên bản của các gói phù hợp với mức độ nghiêm trọng nhất định, cũng như tự động hóa việc tạo changelog. Ngoài ra, các công cụ này cho phép pre release chế độ, 🍒 trên 🍰.

Cái gì tiếp theo ?

Sau khi quyết định các công cụ, đã đến lúc bắt đầu làm việc. Trong bài viết blog tiếp theo, chúng ta sẽ nói về hệ thống xây dựng và tất cả các hoạt động phát triển/tự động hóa/tích hợp liên tục trong bối cảnh của một kho lưu trữ đơn.


Valentin DE ALMEIDA
Trải nghiệm của nhà phát triển & Công nghệ cốt lõi – Ledger Live

Dấu thời gian:

Thêm từ Ledger