add readme

This commit is contained in:
Gabriel Augendre 2024-04-03 01:12:50 +02:00
parent 3be271a320
commit 141376130f
2 changed files with 15 additions and 4 deletions

11
README.md Normal file
View file

@ -0,0 +1,11 @@
# go-binary-size
This repo is companion to an article published here (TODO add link).
Contents :
* `app`: a Go module intended as an "application" (vs library) with 4 packages compilable as single binaries
* `a`, `a2` and `b` depend exclusively on matching packages from `mod1`
* `control` depends only on stdlib's `fmt` and is used as a control for what a small Go binary can weigh
* `mod1`: a Go module intended to represent a library that `app` would include. It contains 3 packages:
* `a`: depends on a large external dependency (`github.com/gin-gonic/gin`) in the "normal" files and also depends on some other external dependencies exclusively used in the test files, whether in the same package or in the `a_test` package.
* `a2`: same as `a` but doesn't contain test files, to show that test dependencies don't bloat the built binary
* `b`: depends only on `fmt`

View file

@ -1,8 +1,8 @@
.PHONY: build .PHONY: build
build: build:
GOARCH=amd64 go build -o ./dist/a ./a GOARCH=amd64 GOOS=darwin go build -o ./dist/a ./a
GOARCH=amd64 go build -o ./dist/a2 ./a2 GOARCH=amd64 GOOS=darwin go build -o ./dist/a2 ./a2
GOARCH=amd64 go build -o ./dist/b ./b GOARCH=amd64 GOOS=darwin go build -o ./dist/b ./b
GOARCH=amd64 go build -o ./dist/control ./control GOARCH=amd64 GOOS=darwin go build -o ./dist/control ./control
ls -al ./dist ls -al ./dist
shasum -a 256 ./dist/* shasum -a 256 ./dist/*