Skip to main content

Reshape a version before writing it into a JSON file

· 2 min read
Erik Osterman
Founder @ Cloud Posse

Git tags on GitHub almost always carry a v prefix — v1.228.0 — because that's the convention both git tag and GitHub releases nudge toward. Package manifests, on the other hand, almost never want that prefix: package.json, plugin manifests, and marketplace listings all expect bare semver. Whenever a version comes from GitHub and needs to land in one of those files, something has to strip the v first.

The Problem​

The Version Tracker's json file manager writes a locked dependency's resolved value directly into a JSON field, byte-for-byte. For a dependency sourced from github-releases or github-tags, that resolved value is the raw git tag — so a target field that needed bare semver got v1.228.0 verbatim, with no way to reshape it before the write.

The Fix​

options.set entries in the json manager now accept an optional format: a small Go template rendered against the resolved version, whose output replaces the verbatim value instead. Trimming a v prefix is the common case, but any Sprig string function — trimSuffix, replace, regexReplaceAll — is available too.

How to Use It​

version:
files:
- manager: json
paths:
- package.json
options:
set:
- path: version
from: cli
format: '{{ trimPrefix "v" .Version }}'

Leaving format off keeps today's default: the resolved value is written verbatim, exactly as before.

Get Involved​

See the Version Files docs for the full set syntax. Have feedback on this feature? Open an issue or join the conversation in the Cloud Posse community Slack.