Logo Logo Tem Virgula - Logo Logo Tem Virgula - ICEBRAIN
Logo Logo Tem Virgula - ICEBRAIN

Como configurar o logo logo tem virgula em projetos React modernos

O logo logo tem virgula é um padrão que muita gente tenta reproduzir sem realmente entender por que ele falha no deploy. Eu já perdi uma tarde inteira descobrindo que o problema não era o código em si, mas sim a forma como o Webpack tratava os assets com nomes contendo vírgulas — algo que documentação oficial praticamente ignora. Vou explicar do jeito que funciona na prática, sem rodeios. Se você está tendo problemas com logos em SVG ou PNG que simplesmente não aparecem no build, provavelmente o culpado é o loader de mídia mal configurado.

logo logo tem virgula no webpack config

O webpack, por padrão, trata vírgulas no nome do arquivo como delimitador de query strings. Isso significa que um arquivo chamado logo,minimal.svg é interpretado como logo com um parâmetro de query minimal.svg. O resultado é que o asset nunca é encontrado no disco durante o processamento do módulo. A solução mais direta é adicionar uma regex no moduleNameMapper do Webpack para escapar ou substituir a vírgula antes do processamento:

config.module.rules.find(r => r.test && r.test('.svg')).options.name = 'static/media/[name].[hash:8].[ext]'; Isso parece simples, mas tem uma pegadinha. Se você estiver usando Create React App ejectado, o loader de imagem também precisa ser atualizado separadamente. Eles são dois loaders diferentes que compartilham a mesma configuração de nomeação. Se apenas um deles for corrigido, o SVG funciona mas o PNG quebra — e o erro é silent, só aparece no console como um 404 discreto.

👉 Clique no botão abaixo para saber mais sobre o assunto!

No meu caso, o problema surgia especificamente quando o logo tinha o sufixo ,v2 no final, usado para controle de cache. Eu resolvi isso renomeando todos os arquivos para usar hífen no lugar da vírgula e adicionando um fallback no CSS com o @font-face equivalente para imagens, usando src: url() com hash no nome. Outra coisa que ninguém menciona: o file-loader tem um bug conhecido desde a versão 6.0 onde ele não lida bem com caminhos absolutos que contêm vírgulas em ambientes Windows. Se você desenvolve no Windows e usa caminhos como C:\Projetos\logo,v2.png, o build pode passar silenciosamente mas o arquivo final não é copiado para a pasta dist. A workaround é usar o path.relative() do Node para normalizar o caminho antes de passar para o loader.

Alternativa sem modificar o webpack

Se você não quer mexer na configuração do build, existe uma alternativa mais simples. Em vez de colocar a vírgula no nome do arquivo, use um hash no conteúdo do SVG. Assim: import logo from './logo-minimal.svg?url';

Isso usa o import de recurso nativo do Vite, que já escapa corretamente caracteres especiais no nome. O problema é que isso só funciona no Vite. Se seu projeto usa Next.js com Image Optimization, o comportamento é diferente — o Next.js faz cópia dos assets para .next/static/media e o nome original é preservado, então a vírgula continua sendo problemática lá também. Uma desvantagem dessa abordagem é que o URL gerado muda a cada build se o conteúdo do arquivo mudar, o que quebra cache de longa duração em CDNs que dependem de nomes estáveis. Para logos que raramente mudam, isso é aceitável. Para logos que são atualizados frequentemente como parte de um design system, prefira manter nomes sem vírgula e usar query params no import.

Se o problema é puramente visual e o logo precisa ter uma variação com vírgula no nome para organização interna, a opção mais segura é usar aliases no TypeScript ou no path resolution. Você mapeia ~/assets/logo-minimal para o arquivo real sem vírgula, e o código fonte permanece legível sem tocar no sistema de build.