Bạn có thể gom các package liên quan vào module, rồi publish các module đó cho những lập trình viên khác dùng. Bài này trình bày tổng quan về việc phát triển và publish module.
Để hỗ trợ việc phát triển, publish và sử dụng module, bạn dùng:
- Một quy trình làm việc để phát triển và publish module, chỉnh sửa chúng với các phiên bản mới theo thời gian. Xem Quy trình phát triển và publish module.
- Các thực hành thiết kế giúp người dùng module hiểu được nó và nâng cấp lên phiên bản mới một cách ổn định. Xem Thiết kế và phát triển.
- Một hệ thống phi tập trung để publish module và lấy mã nguồn của chúng. Bạn cung cấp module của mình cho các lập trình viên khác dùng từ chính repository của bạn và publish kèm một số phiên bản. Xem Publish phi tập trung.
- Một cỗ máy tìm kiếm package và trình duyệt tài liệu (pkg.go.dev), nơi các lập trình viên có thể tìm thấy module của bạn. Xem Khám phá package.
- Một quy ước đánh số phiên bản module để truyền đạt kỳ vọng về tính ổn định và tương thích ngược tới các lập trình viên dùng module của bạn. Xem Đánh phiên bản.
- Các công cụ Go giúp các lập trình viên khác quản lý phụ thuộc dễ dàng hơn, bao gồm việc lấy mã nguồn module của bạn, nâng cấp, v.v. Xem Quản lý phụ thuộc.
Xem thêm
- Nếu bạn chỉ quan tâm đến việc dùng các package do người khác phát triển thì đây không phải bài dành cho bạn. Thay vào đó, xem Quản lý phụ thuộc.
- Để xem một hướng dẫn bao gồm vài điều cơ bản về phát triển module, xem Hướng dẫn: Tạo một module Go.
Quy trình phát triển và publish module
Khi bạn muốn publish module cho người khác, bạn áp dụng một vài quy ước để việc dùng những module đó dễ dàng hơn.
Các bước tổng quát sau đây được mô tả chi tiết hơn trong Quy trình phát hành và đánh phiên bản module.
- Thiết kế và viết mã cho các package mà module sẽ bao gồm.
- Commit mã nguồn vào repository của bạn theo những quy ước bảo đảm nó có thể được người khác lấy về qua các công cụ Go.
- Publish module để các lập trình viên có thể khám phá ra nó.
- Theo thời gian, chỉnh sửa module với các phiên bản dùng quy ước đánh số phiên bản để báo hiệu tính ổn định và tương thích ngược của từng phiên bản.
Thiết kế và phát triển
Module của bạn sẽ dễ được lập trình viên tìm thấy và sử dụng hơn nếu các hàm và package trong đó tạo thành một chỉnh thể mạch lạc. Khi thiết kế API công khai của một module, hãy cố giữ cho chức năng của nó tập trung và tách bạch.
Ngoài ra, việc thiết kế và phát triển module với tương thích ngược trong đầu sẽ giúp người dùng nâng cấp mà ít phải xáo trộn mã của chính họ. Bạn có thể dùng một số kỹ thuật trong mã nguồn để tránh phát hành một phiên bản phá vỡ tương thích ngược. Để biết thêm về những kỹ thuật đó, xem Giữ cho module của bạn tương thích trên blog của Go.
Trước khi publish một module, bạn có thể tham chiếu đến nó trên hệ thống tệp cục bộ bằng directive replace. Điều này giúp bạn dễ viết mã phía client gọi các hàm trong module trong khi module vẫn đang được phát triển. Để biết thêm thông tin, xem “Viết mã dựa trên một module chưa publish” trong Quy trình phát hành và đánh phiên bản module.
Publish phi tập trung
Trong Go, bạn publish module của mình bằng cách gắn tag cho mã nguồn của nó trong repository để các lập trình viên khác có thể dùng. Bạn không cần đẩy module lên một dịch vụ tập trung nào, bởi các công cụ Go có thể tải module của bạn trực tiếp từ repository (được định vị bằng module path của module, vốn là một URL đã lược bỏ scheme) hoặc từ một máy chủ proxy.
Sau khi import package của bạn trong mã của họ, các lập trình viên dùng công cụ Go (bao gồm lệnh go get) để tải mã nguồn module của bạn về nhằm biên dịch cùng. Để hỗ trợ mô hình này, bạn tuân theo các quy ước và thực hành tốt giúp các công cụ Go (thay mặt cho một lập trình viên khác) có thể lấy mã nguồn module của bạn từ repository. Ví dụ, các công cụ Go dùng module path mà bạn chỉ định, cùng với số phiên bản module bạn dùng để gắn tag cho module khi phát hành, nhằm định vị và tải module về cho người dùng của nó.
Để biết thêm về các quy ước và thực hành tốt liên quan đến mã nguồn và việc publish, xem Quản lý mã nguồn của module.
Để xem hướng dẫn từng bước về việc publish một module, xem Publish một module.
Khám phá package
Sau khi bạn đã publish module và có người lấy nó về bằng các công cụ Go, nó sẽ xuất hiện trên trang khám phá package của Go tại pkg.go.dev. Ở đó, các lập trình viên có thể tìm kiếm trên trang để thấy nó và đọc tài liệu của nó.
Để bắt đầu dùng module, một lập trình viên import các package từ module, rồi chạy lệnh go get để tải mã nguồn của nó về nhằm biên dịch cùng.
Để biết thêm về cách các lập trình viên tìm và dùng module, xem Quản lý phụ thuộc.
Đánh phiên bản
Khi bạn chỉnh sửa và cải thiện module theo thời gian, bạn gán các số phiên bản (dựa trên mô hình semantic versioning) được thiết kế để báo hiệu tính ổn định và tương thích ngược của từng phiên bản. Điều này giúp các lập trình viên dùng module của bạn xác định khi nào module đã ổn định và liệu một lần nâng cấp có thể kèm theo những thay đổi đáng kể về hành vi hay không. Bạn cho biết số phiên bản của module bằng cách gắn tag số đó cho mã nguồn của module trong repository.
Để biết thêm về việc phát triển các bản cập nhật major version, xem Phát triển một bản cập nhật major version.
Để biết thêm về cách bạn dùng mô hình semantic versioning cho module Go, xem Cách đánh số phiên bản module.