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àng và liê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
- Phân phối nội dung và PR được hỗ trợ bởi SEO. Được khuếch đại ngay hôm nay.
- PlatoData.Network Vertical Generative Ai. Trao quyền cho chính mình. Truy cập Tại đây.
- PlatoAiStream. Thông minh Web3. Kiến thức khuếch đại. Truy cập Tại đây.
- Trung tâmESG. Than đá, công nghệ sạch, Năng lượng, Môi trường Hệ mặt trời, Quản lý chất thải. Truy cập Tại đây.
- PlatoSức khỏe. Tình báo thử nghiệm lâm sàng và công nghệ sinh học. Truy cập Tại đây.
- nguồn: https://www.ledger.com/blog/ledger-live-monorepo-project-part-2-the-tools-make-it-shine
- : có
- :là
- :không phải
- :Ở đâu
- 1
- a
- Giới thiệu
- Tuyệt đối
- thêm
- Thêm
- Sau
- một lần nữa
- Tất cả
- cho phép
- Đã
- lựa chọn thay thế
- an
- và
- có góc cạnh
- công bố
- kiến trúc
- LÀ
- bài viết
- AS
- At
- tự động hóa
- tự động
- Tự động hóa
- có sẵn
- cơ bản
- BE
- trở thành
- Hơn
- Một chút
- Chặn
- Blog
- Blog Posts
- cả hai
- xây dựng
- xây dựng
- xây dựng
- nhưng
- by
- thay đổi
- thay đổi
- Những thay đổi
- kiểm tra
- sự lựa chọn
- Chọn
- mã
- Cơ sở mã hóa
- đến
- tuân theo
- khái niệm
- đồng thời
- bối cảnh
- liên tục
- Tiện lợi
- Công ước
- công ước
- Trung tâm
- đúng
- có thể
- che
- quyết định
- Quyết định
- Phụ thuộc
- miêu tả
- Mô tả
- Dev
- Nhà phát triển
- ĐÃ LÀM
- do
- tài liệu hướng dẫn
- Không
- Rơi
- dễ dàng
- hệ sinh thái
- hiệu quả
- hiệu quả
- nhập
- đặc biệt
- thành lập
- Ether (ETH)
- BAO GIỜ
- tất cả mọi thứ
- ở khắp mọi nơi
- kinh nghiệm
- nhanh hơn
- Đặc tính
- Tính năng
- Tập tin
- dòng chảy
- theo
- tiếp theo
- Trong
- May mắn thay
- tìm thấy
- từ
- ngọc
- thế hệ
- máy phát điện
- được
- Go
- đồ thị
- tuyệt vời
- có
- tay
- xử lý
- Có
- tại đây
- HTTPS
- lớn
- ý tưởng
- if
- in
- bao gồm
- hội nhập
- thú vị
- trong
- IT
- ITS
- JavaScript
- chỉ
- Đứa trẻ
- Ledger
- Sổ cái trực tiếp
- ít
- Thư viện
- sống
- Xem
- nhìn
- tìm kiếm
- Rất nhiều
- thực hiện
- làm cho
- giám đốc
- max-width
- di cư
- tâm
- nhỡ
- Chế độ
- chi tiết
- hiệu quả hơn
- nhiều
- nhiều
- tự nhiên
- Điều hướng
- Cần
- cần thiết
- nhu cầu
- Mới
- tiếp theo
- tại
- of
- Xưa
- on
- hàng loạt
- ONE
- có thể
- Khăng khăng
- dàn nhạc
- Nền tảng khác
- vfoXNUMXfipXNUMXhfpiXNUMXufhpiXNUMXuf
- ra
- gói
- gói
- Giấy
- một phần
- Nơi
- kế hoạch
- plato
- Thông tin dữ liệu Plato
- PlatoDữ liệu
- Play
- cắm
- plug and play
- thêm
- có thể
- bài viết
- khá
- dự án
- dự án
- bằng chứng
- bằng chứng về khái niệm
- cho
- đặt
- Mau
- Phản ứng
- Phản ứng gốc
- Reading
- đề nghị
- kho
- tôn trọng
- nghiêm ngặt
- dường như
- Loạt Sách
- thiết lập
- một số
- mức độ nghiêm trọng
- tỏa sáng
- kể từ khi
- So
- giải pháp
- Giải pháp
- một số
- đặc biệt
- tốc độ
- Bắt đầu
- bắt đầu
- Vẫn còn
- hàng
- Câu chuyện
- tiếp theo
- như vậy
- hỗ trợ
- Hỗ trợ
- hệ thống
- Hãy
- Thảo luận
- nhóm
- công nghệ cao
- nói
- hơn
- việc này
- Sản phẩm
- Khối
- cung cấp their dịch
- sau đó
- Kia là
- điều
- những
- Tuy nhiên?
- thời gian
- đến
- quá
- công cụ
- công cụ
- hàng đầu
- cây
- hai
- Cuối cùng
- us
- đã sử dụng
- sử dụng
- v1
- phiên bản
- rất
- khả thi
- ảo
- muốn
- là
- cách
- we
- TỐT
- là
- khi nào
- cái nào
- sẽ
- WISE
- với
- đang làm việc
- sẽ
- nhưng
- bạn
- trên màn hình
- zephyrnet