The build deletes it. vite clears outDir (emptyOutDir: true), and that file is the only reason //go:embed all:dist compiles in a fresh clone - without it a clone that has not run a frontend build cannot run go build at all. Found because it happened: a pnpm build during the transcode work removed the tracked file, and it showed up as a deletion waiting to be committed. A developer who ran a build and then staged everything would have broken every clone silently, and the symptom would appear on someone else's machine. The build now regenerates it, with the explanation in the file itself so the next person to see it knows what it is for.
22 lines
1 KiB
JavaScript
22 lines
1 KiB
JavaScript
// Recreates dist/.gitkeep after a build.
|
|
//
|
|
// vite clears outDir (emptyOutDir: true in vite.config.ts), which deletes the
|
|
// tracked placeholder. Without that file present, //go:embed all:dist in
|
|
// web/embed.go fails to compile, so a fresh clone with no frontend build cannot
|
|
// run `go build` at all - and a developer who ran `pnpm build` and then
|
|
// committed the deletion would silently break every clone.
|
|
//
|
|
// Writing it here means the file survives a build instead of needing to be
|
|
// restored by hand every time.
|
|
import { mkdirSync, writeFileSync } from 'node:fs'
|
|
|
|
mkdirSync('dist', { recursive: true })
|
|
writeFileSync(
|
|
'dist/.gitkeep',
|
|
'# Generated by scripts/keep-dist.mjs after every build.\n' +
|
|
'#\n' +
|
|
'# Keeps web/dist present so //go:embed all:dist in web/embed.go compiles\n' +
|
|
'# in a fresh clone, where the frontend has not been built. Without it the\n' +
|
|
'# server logs "web UI not embedded" and serves the API only, which is the\n' +
|
|
'# intended behaviour for a clone that has not run `pnpm build`.\n',
|
|
)
|