Repository navigation
fix: plugin de purge renomeia o CSS pelo conteúdo purgado - #8
Merged
Merged
Conversation
O purge muda o CSS depois de o Vite dar nome ao arquivo pelo CSS inteiro do tema, que não muda. Uma classe nova no app saía com o mesmo nome e o navegador seguia com a cópia antiga em cache. Agora o generateBundle roda em 'post', o asset purgado ganha o hash do conteúdo final e as referências nos chunks JS, no importedCss e no HTML acompanham. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Pey5PfKcEbwK7SUkH4mhHK
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problema
bootswatchPurge(vite/index.mjs) enxuga cada CSS de tema nogenerateBundle, quando o Vite já deu o hash do nome pelo CSS inteiro do tema — que vem do pacote e não muda. Quando o app passa a usar uma classe nova, o conteúdo purgado muda e o nome não, e o navegador segue com a cópia antiga em cache.Caso real (ddsoft-online,
docs/changelog/2026-10-17-css-tema-cache.md):bootstrap-CqnRIIsZ.csssaiu em 20/09 sem a regra detextBgInfoe em 17/10 com ela; o selo GHS ficou sem fundo e com o texto branco do badge. O ddsoft contornou com um plugin local e deixou a pendência: "a correção certa é no plugin de purge do pacote: renomear o asset depois de purgar".O que mudou
generateBundlepassa aorder: 'post', para rodar depois de o Vite escrever os nomes dos CSS nos chunks (__vite__mapDeps) e noindex.html.this.emitFile(o Rolldown recusa entrada nova atribuída aobundle), mantendoname/originalFileName.viteMetadata.importedCss(manifest) e nos assets.html.docs/changelog/2026-10-18-purge-nome-pelo-conteudo.md.Sem mudança de API. Um consumidor com o contorno local (o
ddsoft:css-tema-pelo-conteudo) continua funcionando: os nomes já batem com o conteúdo e ele não troca nada.Como foi testado
No
ddsoft-online/frontend(Vite 8 / Rolldown), com o plugin de contorno local desligado:vite/index.jspublicado na 0.2.1:npm run test:buildfalha — "bootstrap-CqnRIIsZ.css não tem o hash do conteúdo (7iFlItaN)".vite/index.mjs: passa ("4 CSS de tema com nome pelo conteúdo"). Os 29 CSS dedist/assetstêm o hash do próprio conteúdo, todos são referenciados por um chunk JS ou peloindex.html, e nenhum nome antigo sobrou.O repo não tem testes automatizados para o plugin, e o
biome.jsonignoravite/.Depois do merge
Publicar como 0.2.2. No ddsoft-online, subir a dependência e remover o
ddsoft:css-tema-pelo-conteudodovite.config.ts(a trava docheck-build.mjsfica).Generated by Claude Code