mirror of
https://github.com/tiennm99/loto.git
synced 2026-09-05 18:16:53 +00:00
ci: add inline-script guard for built index.html
SvelteKit emits one inline bootstrap <script> in build/index.html and the CSP in static/_headers is relaxed to `script-src 'unsafe-inline'` to admit it. If a SvelteKit upgrade adds another inline block, the relaxation no longer matches reality and the new block could ship unhashed. `npm run verify:build` reads build/index.html, counts inline scripts (no `src=`), and fails when count > EXPECTED_INLINE (1). New GH Actions workflow runs test + build + verify on push/PR to main. Mutation-tested locally: setting EXPECTED_INLINE=0 fails as expected, restored to 1 passes.
This commit is contained in:
@@ -46,7 +46,9 @@
|
||||
|------|---------|
|
||||
| `svelte.config.js` | adapter-static (HTML export), dual basePath via BUILD_PROFILE env, SvelteKit PWA plugin config. |
|
||||
| `vite.config.js` | Tailwind + SvelteKit + PWA plugins. codeserver HMR config (port, allowedHosts, hmr). |
|
||||
| `package.json` | SvelteKit 2, Svelte 5 (runes), Tailwind 4, Vite, @vite-pwa/sveltekit. Scripts: dev, dev:codeserver, build, build:gh, lint, test, test:watch. |
|
||||
| `package.json` | SvelteKit 2, Svelte 5 (runes), Tailwind 4, Vite, @vite-pwa/sveltekit. Scripts: dev, dev:codeserver, build, build:gh, lint, test, test:watch, verify:build. |
|
||||
| `scripts/verify-build-inline-scripts.mjs` | Post-build CSP guard. Counts inline `<script>` tags in `build/index.html` and fails if > EXPECTED_INLINE (1). Catches future SvelteKit upgrades that add inline blocks the CSP `'unsafe-inline'` relaxation isn't calibrated for. |
|
||||
| `.github/workflows/verify-build.yml` | CI: on push/PR to main runs `npm test && npm run build && npm run verify:build` to enforce the inline-script guard above. |
|
||||
| `eslint.config.mjs` | ESLint 9 flat config (@eslint/js + eslint-plugin-svelte). Declares Svelte 5 rune globals. |
|
||||
| `jsconfig.json` | Path alias `$lib`, no checkJs. |
|
||||
| `.gitignore` | Excludes node_modules, build, .env.local, etc. |
|
||||
|
||||
Reference in New Issue
Block a user