Getting set up

git clone https://github.com/drgould/multi-dev-proxy
cd multi-dev-proxy
go build ./...
go test ./...

Build and test

go build ./...             # build all packages
go build -o mdp ./cmd/mdp  # build the CLI binary
go test ./...              # run all tests
go test -race ./...        # run with the race detector
go vet ./...               # static analysis

End-to-end tests

E2E tests require the testbed running in a separate terminal. See Testbed for what's in there.

cd testbed && ./run.sh   # terminal 1: start proxy + demo servers
npm run test:e2e         # terminal 2: run Vitest + Puppeteer tests

Conventional commits

Commits to main must use conventional commit prefixes — they drive the next version bump. PR titles must carry the same prefix (release-please reads them when squash-merging).

Prefix Effect
feat: minor bump
fix: patch bump
feat!: / fix!: major bump
perf: no release, shown in changelog
docs: / test: / chore: / ci: / refactor: no release, hidden from changelog

Releases

Releases are managed by release-pleasedo not tag manually. The flow is:

  1. Land conventional commits on main.
  2. release-please opens (or updates) a "Release PR" that bumps the version and rewrites CHANGELOG.md.
  3. Merge the Release PR. That creates a GitHub Release and pushes the v* tag.
  4. The tag triggers GoReleaser, which builds and publishes the binaries.

← Back to docs index