Khi bạn muốn cung cấp một module cho các lập trình viên khác, bạn publish nó để các công cụ Go nhìn thấy được. Sau khi bạn đã publish module, các lập trình viên import package của nó sẽ có thể giải quyết phụ thuộc vào module bằng cách chạy các lệnh như go get.
Lưu ý: Đừng thay đổi một phiên bản đã gắn tag của module sau khi đã publish nó. Với các lập trình viên đang dùng module, các công cụ Go xác thực module tải về dựa trên bản sao được tải về đầu tiên. Nếu hai bản khác nhau, các công cụ Go sẽ trả về một lỗi bảo mật. Thay vì thay đổi mã nguồn của một phiên bản đã publish trước đó, hãy publish một phiên bản mới.
Xem thêm
- Để có cái nhìn tổng quan về việc phát triển module, xem Phát triển và publish module
- Để xem quy trình phát triển module ở mức tổng quát – bao gồm cả việc publish – xem Quy trình phát hành và đánh phiên bản module.
Các bước publish
Dùng các bước sau để publish một module.
-
Mở một cửa sổ dòng lệnh và chuyển vào thư mục gốc của module trong repository cục bộ.
-
Chạy
go mod tidy, lệnh này loại bỏ mọi phụ thuộc mà module có thể đã tích tụ nhưng không còn cần thiết nữa.$ go mod tidy -
Chạy
go test ./...một lần cuối để chắc chắn mọi thứ vẫn hoạt động.Lệnh này chạy các unit test bạn đã viết bằng framework testing của Go.
$ go test ./... ok example.com/mymodule 0.015s -
Gắn tag cho dự án với một số phiên bản mới bằng lệnh
git tag.Với số phiên bản, hãy dùng một con số báo hiệu cho người dùng bản chất của những thay đổi trong bản phát hành này. Để biết thêm, xem Cách đánh số phiên bản module.
$ git commit -m "mymodule: changes for v0.1.0" $ git tag v0.1.0 -
Đẩy tag mới lên repository origin.
$ git push origin v0.1.0 -
Cung cấp module bằng cách chạy lệnh
go listđể nhắc Go cập nhật chỉ mục module của nó với thông tin về module bạn đang publish.Đặt trước lệnh này một câu lệnh thiết lập biến môi trường
GOPROXYtrỏ tới một proxy của Go. Điều này bảo đảm yêu cầu của bạn đến được proxy.$ GOPROXY=proxy.golang.org go list -m example.com/[email protected]
Các lập trình viên quan tâm đến module của bạn sẽ import một package từ nó và chạy lệnh go get giống như với bất kỳ module nào khác. Họ có thể chạy lệnh go get để lấy phiên bản mới nhất, hoặc có thể chỉ định một phiên bản cụ thể, như trong ví dụ sau:
$ go get example.com/[email protected]