The tsconfigs were still the ones the CRA conversion produced, while
bsi-ni had been brought in line with the npm create vite@latest
react-ts template.
- take the three tsconfigs from bsi-ni verbatim: ES2023, and
types: ["vite/client"] in place of src/vite-env.d.ts, which the
template no longer ships
- drop the CRA leftovers useDefineForClassFields, resolveJsonModule,
esModuleInterop and forceConsistentCasingInFileNames
- pin typescript with ~ rather than ^, as bsi-ni does
- drop the redundant build.outDir and the server/preview port
overrides, leaving vite's defaults
- fix a vite.config comment that still pointed at the removed etc/
- narrow lineWidth to 120 and use es5 trailing commas
- format JSON at the same indent as the rest, dropping the override
- exclude the vendored XOOPS theme under src/common/assets
- drop the stale static-contents and public exclusions
The CRA toolchain was several major versions behind and no longer
maintained, so the whole build, lint and runtime stack is replaced.
- replace react-scripts with Vite 8 and TypeScript 7
- upgrade to React 19 and react-router 8
- swap unmaintained libraries: react-html-parser, axios, react-ga,
react-image-lightbox, react-helmet, moment, react-spinner-material
- replace ESLint with Biome for linting and formatting
- switch the package manager from yarn to npm
- serve static-contents/ with sirv in dev and copy it into the bundle
- keep a withRouter shim so the class components can stay as they are
for now