VS Code Lite Icons
Tema de ícones leve e modular para o VS Code, baseado no PRD "Icon Theme Extension for Visual Studio Code".
Estrutura do projeto
icon-theme-ext/
├── package.json # Manifesto da extensão (contributes.iconThemes)
├── icons/
│ ├── icon-theme.json # Mapeamento extensão/nome -> ícone (FR01-FR05)
│ ├── file-default.svg
│ ├── folder-default.svg
│ ├── folder-default-open.svg
│ └── ... (demais ícones SVG)
└── README.md
Como testar localmente (F5)
- Abra esta pasta no VS Code.
- Pressione
F5 (ou rode "Run Extension" no painel Run and Debug). Isso abre uma nova janela ("Extension Development Host") com a extensão carregada.
- Na nova janela:
Ctrl+Shift+P → Preferences: File Icon Theme → selecione Lightweight Icons.
- Abra uma pasta de teste com arquivos
.js, .py, package.json, Dockerfile, pastas src/, node_modules/ etc. para validar os mapeamentos.
Como adicionar um novo ícone (fluxo do PRD, seção 6)
- Ativos SVG: coloque o SVG otimizado (SVGO) em
./icons/.
- Declaração de IDs: registre em
iconDefinitions no icon-theme.json:
"_ruby": { "iconPath": "./ruby.svg" }
- Associação de regra: mapeie em
fileExtensions, fileNames, folderNames ou folderNamesExpanded:
"fileExtensions": {
"rb": "_ruby"
}
- Teste local:
F5 e verifique na Explorer.
Esse fluxo deve levar menos de 2 minutos por ícone, conforme o objetivo do PRD (seção 1.3).
Build e publicação
Requer Node.js e o @vscode/vsce:
npm install -g @vscode/vsce
# Gerar o pacote .vsix localmente (instalação manual / distribuição interna)
vsce package
# Publicar no Marketplace (requer conta de publisher e Personal Access Token do Azure DevOps)
vsce publish
Antes de publicar, ajuste em package.json:
publisher: seu ID de publisher no Marketplace.
repository.url: URL real do seu repositório.
icon: recomenda-se um PNG 128x128 para o ícone da extensão em si (o Marketplace não aceita SVG aqui).
Publicação automática (CI/CD)
Este projeto publica sozinho no VS Code Marketplace a cada push na branch main, via .github/workflows/publish.yml. A versão é calculada automaticamente a partir das mensagens de commit, seguindo Conventional Commits:
| Prefixo do commit |
Efeito na versão |
Exemplo |
fix: ... |
patch (1.0.0 → 1.0.1) |
fix: corrige ícone do package.json |
feat: ... |
minor (1.0.0 → 1.1.0) |
feat: adiciona suporte a arquivos .rb |
feat!: ... ou corpo com BREAKING CHANGE: |
major (1.0.0 → 2.0.0) |
feat!: renomeia IDs de iconDefinitions |
qualquer outro (chore:, docs:, refactor:...) |
patch (padrão) |
docs: atualiza README |
O workflow faz tudo: bump de versão no package.json, commit, tag no git, vsce publish e criação de uma Release no GitHub com changelog automático.
Configuração necessária (uma vez só)
No GitHub, vá em Settings → Secrets and variables → Actions → New repository secret e crie:
VSCE_PAT: o Personal Access Token do Azure DevOps com escopo Marketplace → Manage (o mesmo usado no vsce login).
O GITHUB_TOKEN já existe automaticamente, não precisa criar.
Publicando
Basta dar merge/push na main com commits seguindo a convenção acima. Nada de rodar vsce publish manualmente.
Otimização dos ícones (NFR01)
Antes de comitar novos SVGs, rode o SVGO para reduzir o tamanho:
npx svgo ./icons/*.svg
Checklist de aceite (seção 7 do PRD)
- [ ] Todos os ícones renderizam sem atraso no Explorer.
- [ ] O tema aparece corretamente no seletor File Icon Theme com o nome definido em
contributes.iconThemes[0].label.
- [ ] Nenhum erro de parse do
icon-theme.json no console de Developer Tools (Help > Toggle Developer Tools).
- [ ] Tamanho final do
.vsix < 2 MB.
Observação sobre os ícones incluídos
Os SVGs gerados neste scaffold inicial são placeholders simples (formas + rótulo de texto) para que o tema já funcione e seja testável de imediato. Substitua-os pelos seus próprios ícones vetoriais antes de publicar.