Migrate to vite
This commit is contained in:
parent
1914991250
commit
5bdf68eabd
10 changed files with 611 additions and 56 deletions
81
README.md
81
README.md
|
|
@ -1 +1,82 @@
|
|||
# Photos
|
||||
|
||||
A static, progressively enhanced photo portfolio for András Schmelczer.
|
||||
|
||||
## Requirements
|
||||
|
||||
- Node `22.13.0` or newer compatible with `.nvmrc`
|
||||
- npm `10.9.0` or newer
|
||||
|
||||
Install with:
|
||||
|
||||
```sh
|
||||
npm ci
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
```sh
|
||||
npm run dev
|
||||
```
|
||||
|
||||
The dev server binds to `127.0.0.1` by default. This generates responsive image assets and the typed photo manifest before Vite starts.
|
||||
|
||||
## Build
|
||||
|
||||
```sh
|
||||
npm run build
|
||||
```
|
||||
|
||||
The build writes to `dist/`. Static files come from `public/`, and responsive photo assets are generated into `public/static/photos/`.
|
||||
|
||||
## Quality Gates
|
||||
|
||||
Run the full local validation suite with:
|
||||
|
||||
```sh
|
||||
npm run lint:check
|
||||
```
|
||||
|
||||
This checks the photo catalog, generates assets, checks source photos for EXIF/XMP/IPTC metadata, type-checks, lints TypeScript and SCSS, and checks formatting.
|
||||
|
||||
Run unit tests separately:
|
||||
|
||||
```sh
|
||||
npm test
|
||||
```
|
||||
|
||||
Use `npm run lint` to apply Prettier formatting and auto-fixable ESLint/Stylelint issues.
|
||||
|
||||
End-to-end smoke tests are available separately:
|
||||
|
||||
```sh
|
||||
npm run test:e2e
|
||||
```
|
||||
|
||||
Playwright requires a browser installation. CI installs Chromium before running the smoke test.
|
||||
|
||||
## Photo Catalog
|
||||
|
||||
Photo order, captions, and alt text live in `src/photo-catalog.json`. Add new source JPEGs to `src/pictures/`, then add a matching catalog entry. `npm run dev`, `npm run lint:check`, and `npm run build` validate that the catalog and source directory match.
|
||||
|
||||
The generated files under `src/generated/` and `public/static/photos/` are intentionally ignored because they are reproducible from the source images and catalog.
|
||||
|
||||
## Metadata
|
||||
|
||||
Source photos should not contain private EXIF/XMP/IPTC metadata. Check with:
|
||||
|
||||
```sh
|
||||
npm run lint:check
|
||||
```
|
||||
|
||||
Strip metadata with:
|
||||
|
||||
```sh
|
||||
node scripts/strip-image-metadata.mjs
|
||||
```
|
||||
|
||||
Review image changes after stripping because this rewrites the JPEG files.
|
||||
|
||||
## Deployment
|
||||
|
||||
The Forgejo workflow validates pull requests and trusted pushes with `npm ci`, `npm run lint:check`, `npm test`, `npm run build`, and a Playwright smoke test. Only pushes to `main` deploy, by copying `dist/` to `/pages/photos/`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue