Giới thiệu
Trong quá trình phát triển một dự án Golang gần đây, tôi đã gặp phải một vấn đề khá khó chịu. Mặc dù tôi đã chỉ định phiên bản của một gói phụ thuộc, nhưng số phiên bản lại tự động được nâng cấp trong quá trình xây dựng. Lúc đó, tôi không hiểu tại sao lại xảy ra như vậy. Sau đó, tôi đã tìm hiểu về lệnh go mod graph, lệnh này liệt kê tất cả các phụ thuộc trong dự án. Tôi đã thử nghiệm nhưng kết quả không trực quan chút nào; tôi vẫn phải sao chép đầu ra vào một trình soạn thảo văn bản để tìm kiếm thông tin.
Vì vậy, tôi đã quyết định tìm kiếm các công cụ liên quan.
Các công cụ khác
Từ khóa tìm kiếm: Trực quan hóa phụ thuộc Go Module
Có rất nhiều công cụ có sẵn trực tuyến. Hầu hết các giải pháp đều sử dụng graphviz, echarts hoặc tạo hình ảnh. Tôi đã thử nghiệm một vài công cụ.
graphviz là một công cụ mạnh mẽ, nhưng nó yêu cầu cài đặt riêng. Các tệp SVG được tạo ra cũng không dễ đọc, đặc biệt là khi có nhiều gói phụ thuộc. Ví dụ, hãy nhìn vào một tệp SVG dưới đây:
Vì vậy, tôi đã chuyển sang sử dụng echarts.
Wow, nhìn có vẻ đẹp mắt! Phản hồi khi di chuột rất tốt và bảng màu rất sống động.
Giải pháp
echartsrất đẹp, nhưng không thực tế. Với SVG, tôi có thể ít nhất tìm kiếm tên gói; với phiên bảnechartsnày, tên gói không được hiển thị.
Giải pháp của tôi
Được rồi, đủ phàn nàn rồi. Vấn đề vẫn cần được giải quyết. Hôm nay, tôi xin giới thiệu một công cụ trực quan hóa cho go mod graph — gmchart.
gmchart
Cài đặt
bash
go get -u github.com/PaulXu-cn/go-mod-graph-chart/gmchart
Kiểm tra xem việc cài đặt có thành công hay không bằng cách:
bash
gmchart --help
Usage of ~\go\bin\gmchart:
-debug int
là chế độ gỡ lỗi
-keep int
bắt đầu máy chủ http không thoát
Cách sử dụng
Đi đến thư mục dự án Golang của bạn và chạy lệnh:
bash
go mod graph | gmchart
Điều này sẽ tự động mở trình duyệt của bạn. Nếu không, hãy mở bằng tay.
Truy cập http://127.0.0.1:60306 để xem kết quả.
Như bạn thấy, nó sẽ hiển thị các phụ thuộc dưới dạng một cây phụ thuộc. Bạn có thể thấy gói nào được giới thiệu ở tầng nào, điều này rất trực quan. Trang web chứa SVG, giúp dễ dàng tìm một gói cụ thể — chỉ cần sử dụng Ctrl+F để tìm kiếm.
Tóm tắt
Sau khi tìm kiếm lâu như vậy, tại sao lại không có một công cụ phù hợp?
Tôi đã suy ngẫm về điều này. Trực quan hóa là một đặc sản của front-end. Các nhà phát triển front-end thường không sử dụng Golang. Những người làm đều hiếm, và trong số đó, rất ít người quan tâm đến chức năng go mod graph. Vì vậy, công việc này đã rơi vào tay chúng tôi, những nhà phát triển back-end, để tạo ra công cụ này.
Thở dài~
Giải pháp thay thế
Các mẹo tốt nhất
- Luôn kiểm tra phiên bản gói trước khi nâng cấp, để tránh sự cố không mong muốn.
- Sử dụng các công cụ trực quan hóa để dễ dàng theo dõi phụ thuộc.
Những cạm bẫy thường gặp
- Không kiểm soát được phiên bản phụ thuộc dẫn đến lỗi khi biên dịch.
- Không thể tìm kiếm gói trong các tệp SVG.
Mẹo hiệu suất
- Sử dụng lệnh
go mod tidyđể dọn dẹp các phụ thuộc không cần thiết. - Cập nhật các gói phụ thuộc thường xuyên để đảm bảo tính tương thích.
Các câu hỏi thường gặp
1. Làm thế nào để cài đặt gmchart?
Cách cài đặt gmchart rất đơn giản, chỉ cần chạy lệnh go get như đã hướng dẫn.
2. gmchart có hoạt động với tất cả các phiên bản Golang không?
Có, gmchart tương thích với các phiên bản Golang hiện tại.
3. Tôi có thể sử dụng gmchart cho các dự án lớn không?
Có, gmchart được thiết kế để xử lý các dự án với nhiều phụ thuộc.
Hy vọng bài viết này sẽ giúp bạn hiểu rõ hơn về việc trực quan hóa phụ thuộc trong Golang và cách sử dụng công cụ gmchart một cách hiệu quả!