DEV Community

Cover image for β˜„οΈ How to update version's cache of your package in pkg.go.dev?
Vic ShΓ³stak
Vic ShΓ³stak

Posted on • Updated on

β˜„οΈ How to update version's cache of your package in pkg.go.dev?

Introduction

Hi, DEV people! πŸ˜‰ Sometimes, when you publish a new version of your Go package, pkg.go.dev may still give away an old version for a long time.

This also means, that if other people are using your package, not be able to update to the new version until the cache is updated.

Let's fix this! πŸ‘Œ

πŸ“ Table of contents

A little story from real-life

That's what we did at Fiber Go web framework a few months ago.

GitHub logo gofiber / fiber

⚑️ Express inspired web framework written in Go

After fixed a major bug, a new Fiber version could not be installed on users projects for about a couple of hours, because the cache was not updated. But the press release for the fix was already out (in official repository, Twitter, etc.) and users wanted to update and could not.

Worst-case scenario, isn't it? 😨

↑ Table of contents

Solution

Save this command to a Makefile (or a task manager you're using now):

# ...

update-pkg-cache:
    GOPROXY=https://proxy.golang.org GO111MODULE=on \
    go get github.com/$(USER)/$(PACKAGE)@v$(VERSION)

# ...
Enter fullscreen mode Exit fullscreen mode

And use it, like this:

make update-pkg-cache USER=gofiber PACKAGE=fiber VERSION=1.12.4
Enter fullscreen mode Exit fullscreen mode

Where:

  • USER your GitHub user or organization name
  • PACKAGE a name of your package to update cache
  • VERSION a version number to update cache

It's that simple and clear!

↑ Table of contents

P.S.

If you want more articles (like this) on this blog, then post a comment below and subscribe to me. Thanks! 😻

And of course, you can help me make developers' lives even better! Just connect to one of my projects as a contributor. It's easy!

My projects that need your help (and stars) πŸ‘‡

  • πŸ”₯ gowebly: A next-generation CLI tool for easily build amazing web applications with Go on the backend, using htmx & hyperscript and the most popular atomic/utility-first CSS frameworks on the frontend.
  • ✨ create-go-app: Create a new production-ready project with Go backend, frontend and deploy automation by running one CLI command.
  • πŸƒ yatr: Yet Another Task Runner allows you to organize and automate your routine operations that you normally do in Makefile (or else) for each project.
  • πŸ“š gosl: The Go Snippet Library provides snippets collection for working with routine operations in your Go programs with a super user-friendly API and the most efficient performance.
  • πŸ„β€β™‚οΈ csv2api: The parser reads the CSV file with the raw data, filters the records, identifies fields to be changed, and sends a request to update the data to the specified endpoint of your REST API.
  • 🚴 json2csv: The parser can read given folder with JSON files, filtering and qualifying input data with intent & stop words dictionaries and save results to CSV files by given chunk size.

Latest comments (1)

Collapse
 
sudden_dev profile image
Andrey Slotin

Hey Vic, nice write up. I've had the same problem earlier this year and came up with a Github Action that does pretty much the same every time a new package version is released: github.com/marketplace/actions/go-...