Island/Markdown pages lose CSS in production when it is imported through a component
I maintainer di solito rispondono entro 1 giorno
Una pull request collegata è già stata integrata.
- #481 di @Brooooooklyn — integrata
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 74/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- react, typescript, vite
- Ambito
- build-system, frontend
Direzione di ricerca
Start by reading void/dist/pages/islands-plugin.mjs, especially needsIslandClientBundle() and extractCssImports(), then trace how createClientAssetTags in void/dist/routing-assets-*.mjs uses the manifest. Reproduce with the linked project using pnpm build && pnpm preview; check that production output includes the CSS link for both / and /about, including when CSS is imported through a component.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the bug
On island pages (*.island.tsx) and Markdown pages, CSS that is imported by a regular component (for example a shared Shell rendered by pages/layout.tsx) is applied in vite dev but missing from the production build. The rendered HTML has no <link rel="stylesheet">.
This is easy to miss because everything looks correct in dev.
Reproduction
https://github.com/Nkzn/void-islands-css-missing-repro
pnpm install
pnpm dev # / and /about have a red background
pnpm build && pnpm preview # / and /about have no stylesheet
src/Shell.tsximports./global.css;pages/layout.tsxrenders<Shell>.- In the production build,
dist/clientis not generated at all and the CSS only appears underdist/ssr/assets/.
Expected
Production output links the CSS that the page and its layouts depend on (as dev does), even when the page ships no JavaScript.
Possible cause
void/dist/pages/islands-plugin.mjsneedsIslandClientBundle()(L23) only checks the source text of*.island.*,layout.*and_*files for island imports or CSS imports written directly in those files. Transitive imports are not considered, so the islands client entry is not built here.extractCssImports()(L61) likewise only collects CSS imported directly in those files.
void/dist/routing-assets-*.mjs(createClientAssetTags, L115): when the islands client entry is not in the manifest, it returns empty asset tags, so no CSS link is emitted either.
Workaround
Import the CSS directly in pages/layout.tsx (import "../src/global.css"). Then virtual:void-islands-client is built and both pages get <link rel="stylesheet" href="/assets/islands-client-*.css">, still without any <script>.
Versions
[email protected],@void/[email protected],@void/[email protected][email protected], Node.js 24, pnpm 12, macOS
- Lingua principale
- TypeScript
- Stelle
- 402
- Fork
- 32
- Merge medio
- 12h 1m
- PR unite (30g)
- 80
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di voidzero-dev/void
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
voidzero-dev/void#484 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
voidzero-dev/void#463 ·
I maintainer di solito rispondono entro 1 giorno
-
Deploy after a secret change fails for Workers over ~750 KB: source read-back capped at 1 MiBForse già presa @Brooooooklyn l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
voidzero-dev/void#459 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 1/5 1-3 ore Idoneità per principianti 78/100
voidzero-dev/void#428 ·
I maintainer di solito rispondono entro 1 giorno
-
Allow `npm create void` and `void init` to run without promptsForse già presa @ashunar0 l’ha presa oggi. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 57/100
voidzero-dev/void#491 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di voidzero-dev/void
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
ccch1mneyyy/dsh-TUI#1631 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
MiniMax-AI/minimax-code#507 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Transient OAuth login failure persists in getLoginStatus and masks active account in dashboardForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertaaccount-pool bug gui
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
lidge-jun/opencodex#7378 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Admin search throws for permissions added through Admin.generalIndexItems('permissions', ...)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno