diff --git a/.gitignore b/.gitignore index 021fc6ae..3239e506 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ -# for build -css/xterm.css -js/xterm*.js* -js/aalib.js* +# Everything `npm run build` produces — vendor assets, the app bundle, and the +# static mirror — lands here. It is the Netlify publish directory and is never +# committed, so generated files cannot drift from config/*.js. +dist/ images/*Zone.Identifier diff --git a/README.md b/README.md index ab908b0c..b6d8ccda 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ Who needs a website when you have a terminal. - instagram: instagram account - git: this repo - github: all repos + - locate: physical address + - www: plain-text version of this site - test: do not use - other: try your favorite linux commands @@ -83,12 +85,62 @@ Future project: get the Hello Worlds working for every portfolio company with a - zed ## Build Notes -Run `npm run build` before serving the site locally or deploying. +`npm run build` produces `dist/`, which is what Netlify publishes. It is wiped +and rebuilt from scratch each time, and it is gitignored — no build output is +ever committed. -That build now: +That build: + - copies the static assets (`images/`, `videos/`, `css/`, `welcome.htm`, and the + `config/*.js` files `welcome.htm` loads directly) - copies and minifies the xterm vendor assets - - bundles the app boot/runtime code into `js/app.bundle.js` + - bundles the app boot/runtime code into `dist/js/app.bundle.js` - emits a minified lazy-load asset for the RickRoll animation + - generates the static mirror and `dist/index.html` (see below) + +Anything not on the copy list in `scripts/build-assets.js` stays out of `dist/`, +so `scripts/`, `tests/`, `package.json`, and the unbundled `js/` sources are not +served. + +`npm start` builds and then runs `netlify dev` against `dist/`. + +## The static mirror +The terminal renders its content only when someone types a command, so search +engines and LLM crawlers see an empty page. `scripts/build-pages.js` renders the +same `config/*.js` data as plain HTML at real URLs: + +``` +/about/ /jobs/ /portfolio/ /portfolio// /team/ /team// +robots.txt sitemap.xml llms.txt llms-full.txt +``` + +**`config/*.js` is the only source of truth.** Changing a portfolio description +regenerates that company's page, both indexes, the sitemap, the llms files, and +the `