FastStruct 📁

Una extensión de VS Code para visualizar y documentar rápidamente la estructura de archivos de tu proyecto, con potentes capacidades de comparación entre ramas Git. FastStruct te ayuda a crear documentación clara y bien formateada de la estructura de directorios de tu proyecto, incluyendo el contenido de los archivos cuando lo necesites, y ahora también te permite analizar diferencias entre ramas de forma visual.

Características ✨
Generación de Estructura
- 📊 Genera estructura visual en árbol de tu proyecto
- 📝 Incluye contenido de archivos en la documentación (opcional)
- 🎯 Exclusiones configurables de archivos y carpetas
- 💡 Detección inteligente de archivos binarios
- 🖱️ Integración con menú contextual del explorador
- 🎨 Interfaz de configuración visual moderna e intuitiva
- 📈 Estadísticas en tiempo real sobre exclusiones
- 🔍 Prueba de patrones para verificar exclusiones
- 📥 Importación desde .gitignore para configuración rápida
Comparación de Ramas (Nueva Funcionalidad)
- 🔀 Comparación completa entre ramas con análisis detallado de cambios
- 📜 Historial de commits exclusivos de cada rama (últimos 20)
- 🎨 Resaltado de sintaxis en las diferencias de código
- 🔍 Detección de movimientos y renombrados con porcentajes de similitud
- 📊 Análisis completo de archivos modificados, agregados y eliminados
- 🛡️ Resolución robusta de diferencias con múltiples estrategias de fallback
- 🎚️ Límites configurables para proyectos grandes
- 🐛 Modo debug para diagnóstico detallado
Instalación 💻
Puedes instalar FastStruct directamente desde el VS Code Marketplace:
- Abre VS Code
- Presiona
Ctrl+P
/ Cmd+P
- Escribe
ext install faststruct
O busca "FastStruct" en la vista de Extensiones (Ctrl+Shift+X
/ Cmd+Shift+X
).
Uso 🚀
Uso Básico
FastStruct ofrece diferentes formas de generar la estructura de tu proyecto:
- Haz clic derecho en cualquier carpeta del explorador de VS Code
- Selecciona FastStruct en el menú
- Elige una de las siguientes opciones:
- Crear estructura... - Te permite elegir qué tipo de estructura generar
- Crear estructura con contenido - Incluye el contenido de los archivos
- Crear solo estructura - Muestra solo la estructura de carpetas y archivos
- Crear estructura con vista previa - Muestra una vista previa antes de generar
2. Paleta de Comandos
También puedes usar la paleta de comandos (Ctrl+Shift+P
/ Cmd+Shift+P
):
- Escribe "FastStruct"
- Selecciona uno de los comandos disponibles
Comparación de Ramas Git 🔀
FastStruct incluye potentes herramientas para comparar ramas Git:
Comandos de Comparación
Comparar diferencias entre ramas
- Click derecho → FastStruct → Comparación de Ramas → Comparar diferencias entre ramas
- Muestra análisis completo con commits, archivos modificados y diffs detallados
Comparar con rama actual
- Click derecho → FastStruct → Comparación de Ramas → Comparar con rama actual
- Compara la rama seleccionada con tu rama de trabajo actual
Estructura de archivos - Comparación entre ramas
- Click derecho → FastStruct → Comparación de Ramas → Estructura de archivos
- Muestra solo la estructura de cambios sin el contenido
Listar todas las ramas
- Click derecho → FastStruct → Comparación de Ramas → Listar todas las ramas
- Vista rápida de todas las ramas disponibles
Características de la Comparación
- Análisis completo: Muestra todos los archivos modificados con sus diferencias
- Detección inteligente: Identifica archivos movidos o renombrados con porcentaje de similitud
- Historial de commits: Lista los últimos 20 commits exclusivos de la rama fuente
- Secciones contextuales: Diferentes títulos según el tipo de cambio:
- 📂 Archivos movidos/renombrados: "Archivo movido desde X hasta Y (95% similar)"
- 🆕 Archivos nuevos: Muestra el contenido completo del nuevo archivo
- 🗑️ Archivos eliminados: Preserva el contenido del archivo eliminado
- 📝 Archivos modificados: Muestra las diferencias con resaltado de sintaxis
Ejemplo de Salida de Comparación
# 🔄 Comparación de Ramas: feature/nueva-funcionalidad → main
## 📊 Resumen
- **Archivos modificados**: 15
- **Líneas agregadas**: +523
- **Líneas eliminadas**: -89
- **Archivos nuevos**: 3
- **Archivos eliminados**: 1
## 📝 Commits (feature/nueva-funcionalidad)
1. feat: agregar nueva funcionalidad (hace 2 horas)
2. fix: corregir error en validación (hace 5 horas)
...
## 📁 Estructura de cambios
└── 📁 src
├── 📝 main.ts (modificado)
├── 🆕 newFeature.ts (nuevo)
└── 📂 utils/helper.ts ← helpers/util.ts (movido, 98% similar)
Nueva Interfaz de Configuración 🎨
FastStruct incluye una interfaz de configuración completamente renovada:
- Haz clic derecho en el explorador → FastStruct → Open Settings
- O usa la paleta de comandos: "FastStruct: Open Settings"
Características de la Nueva Interfaz
- Vista General con Estadísticas: Visualiza el impacto de tus exclusiones en tiempo real
- Navegación por Secciones: Organización clara de las opciones
- Búsqueda en Listas: Encuentra rápidamente elementos en listas largas
- Prueba de Patrones: Verifica que tus patrones funcionen correctamente
- Importación desde .gitignore: Configura exclusiones basadas en tu archivo .gitignore
- Plantillas Predefinidas: Aplica configuraciones comunes para proyectos Node.js, Python, Java, .NET
- Herramientas de Mantenimiento: Limpia duplicados y ordena patrones automáticamente
Tipos de Salida 📋
1. Estructura con Contenido
Genera la estructura completa incluyendo el contenido de los archivos:
└── 📁project
├── 📁src
│ └── index.js
└── README.md
Path: src/index.js
Content:
```javascript
console.log('Hello World');
### 2. Solo Estructura
Genera únicamente la estructura de carpetas y archivos, sin contenido:
└── 📁project
├── 📁src
│ ├── index.js
│ └── utils.js
├── 📁tests
│ └── test.js
└── README.md
## Lista Completa de Comandos 📋
### Comandos de Generación de Estructura
- `FastStruct: Create Structure` - Genera estructura desde la paleta de comandos
- `FastStruct: Crear estructura con contenido` - Incluye contenido de archivos
- `FastStruct: Crear solo estructura` - Solo estructura sin contenido
- `FastStruct: Crear estructura...` - Menú interactivo para elegir tipo
- `FastStruct: Crear estructura con vista previa` - Vista previa antes de generar
### Comandos de Configuración
- `FastStruct: Open Settings` - Abre la interfaz visual de configuración
- `FastStruct: Check Configuration Location` - Verifica ubicación de configuración
- `FastStruct: Export Configuration` - Exporta configuración a archivo JSON
- `FastStruct: Import Configuration` - Importa configuración desde JSON
- `FastStruct: Reset Configuration` - Restaura configuración por defecto
- `FastStruct: Ver todas las exclusiones actuales` - Lista todas las exclusiones
### Comandos de Exclusión de Archivos
- `Excluir este archivo específico` - Excluye el archivo seleccionado
- `Excluir archivos con esta extensión` - Excluye por extensión (*.js, *.log)
- `Excluir archivos con este nombre` - Excluye por nombre exacto
- `Excluir solo el contenido de este archivo` - Muestra archivo pero oculta contenido
- `Excluir contenido de archivos con esta extensión` - Oculta contenido por tipo
- `Excluir archivos que coincidan con patrón...` - Exclusión por patrón personalizado
- `Incluir este archivo (remover exclusión)` - Remueve exclusiones del archivo
### Comandos de Exclusión de Carpetas
- `Excluir esta carpeta específica` - Excluye la carpeta seleccionada
- `Excluir carpetas con este nombre` - Excluye todas las carpetas con el mismo nombre
- `Excluir solo el contenido de esta carpeta` - Muestra carpeta pero oculta contenido
- `Excluir subcarpetas pero mantener archivos` - Excluye solo subcarpetas
- `Excluir carpetas que coincidan con patrón...` - Exclusión por patrón personalizado
- `Incluir esta carpeta (remover exclusión)` - Remueve exclusiones de la carpeta
### Comandos de Comparación de Ramas
- `FastStruct: Comparar diferencias entre ramas` - Comparación completa con diffs
- `FastStruct: Comparar con rama actual` - Compara rama seleccionada con actual
- `FastStruct: Estructura de archivos - Comparación entre ramas` - Solo estructura
- `FastStruct: Listar todas las ramas` - Muestra todas las ramas Git
### Comando de Diagnóstico
- `FastStruct: Health Check` - Verifica el estado de la extensión
## Guía de Configuración ⚙️
### Estructura de Configuración
FastStruct se puede configurar usando `faststruct.config` en los ajustes de VS Code:
```json
{
"faststruct.config": {
"debug": false,
"exclude": {
"folders": [...],
"files": [...],
"advanced": {
"patterns": [...],
"specificFiles": [...],
"specificFolders": [...],
"regexPatterns": [...]
}
},
"excludeContent": {
"files": [...],
"folders": [...],
"patterns": [...]
},
"output": {
"includeContent": true,
"includeEmptyFolders": true,
"includeFileSize": false,
"includeLastModified": false
}
}
}
Opciones de Configuración
1. Opciones de Salida (Nuevo)
"output": {
"includeContent": true, // Incluir contenido de archivos
"includeEmptyFolders": true, // Mostrar carpetas vacías
"includeFileSize": false, // Mostrar tamaño de archivos
"includeLastModified": false // Mostrar fecha de modificación
}
2. Modo Debug
"debug": true
Habilita el registro detallado para solución de problemas
3. Exclusiones Básicas
Exclusiones de Carpetas
"exclude": {
"folders": [
"node_modules",
".git",
"dist",
"build"
]
}
Exclusiones de Archivos
"exclude": {
"files": [
"*.log",
"*.lock",
"package-lock.json"
]
}
4. Exclusiones Avanzadas
Patrones Glob
"exclude": {
"advanced": {
"patterns": [
"**/*.min.js",
"**/*.generated.*"
]
}
}
Archivos/Carpetas Específicos
"exclude": {
"advanced": {
"specificFiles": [
"src/config/sensitive.json"
],
"specificFolders": [
"src/utils/"
]
}
}
Expresiones Regulares
"exclude": {
"advanced": {
"regexPatterns": [
"src/.*\\.md$",
"docs/.*\\.temp\\.*"
]
}
}
5. Exclusiones de Contenido
Oculta el contenido de archivos mientras los mantiene en la estructura:
"excludeContent": {
"files": ["*.config.js"],
"folders": ["src/config"],
"patterns": ["**/*.secret.*"]
}
Ejemplo de Configuración Completa
{
"faststruct.config": {
"debug": false,
"exclude": {
"folders": ["node_modules", ".git", "dist"],
"files": ["*.log", "*.lock"],
"advanced": {
"patterns": ["**/*.min.js"],
"specificFiles": ["src/config/secret.json"],
"specificFolders": ["tests/fixtures/"],
"regexPatterns": [".*\\.temp\\..*"]
}
},
"excludeContent": {
"files": ["*.env"],
"folders": ["src/config"],
"patterns": ["**/*.secret.*"]
},
"output": {
"includeContent": true,
"includeEmptyFolders": false,
"includeFileSize": true,
"includeLastModified": false
}
}
}
Consejos de Uso 💡
Configuración Rápida
- Usa la función "Importar desde .gitignore" para una configuración inicial rápida
- Aplica plantillas predefinidas según el tipo de proyecto
Rendimiento
- Para proyectos grandes, considera usar "Solo estructura" para obtener resultados más rápidos
- Usa patrones simples cuando sea posible para mejor rendimiento
- En comparación de ramas, ajusta
maxFilesAnalyzed
y maxLinesPerFile
para proyectos grandes
Seguridad
- Usa
excludeContent
para archivos sensibles que deben aparecer en la estructura pero sin mostrar su contenido
- Verifica tus patrones antes de compartir salidas de estructura
Organización
- Usa la función "Ordenar Patrones" para mantener tu configuración organizada
- Ejecuta "Limpiar Duplicados" periódicamente para optimizar tu configuración
Comparación de Ramas
- Para análisis rápidos, usa "Estructura de archivos - Comparación entre ramas"
- Activa el modo debug si encuentras problemas con las diferencias
- La detección de movimientos funciona mejor con archivos que mantienen >80% de similitud
Atajos de Teclado 🎹
Puedes asignar atajos de teclado personalizados a los comandos de FastStruct:
- Abre la configuración de atajos (
Ctrl+K Ctrl+S
/ Cmd+K Cmd+S
)
- Busca "FastStruct"
- Asigna tus atajos preferidos
Requisitos 📋
- Visual Studio Code v1.100.0 o superior
- Git instalado (para funcionalidades de comparación de ramas)
Convenciones de Nomenclatura 📝
Este proyecto sigue las siguientes convenciones para nombres de archivos:
- Archivos TypeScript:
camelCase.ts
o PascalCase.ts
- Servicios y clases:
PascalCase.ts
(ej: ConfigurationService.ts
)
- Utilidades y funciones:
camelCase.ts
(ej: fileUtils.ts
)
- Archivos de prueba:
camelCase.test.ts
o PascalCase.test.ts
- Archivos JavaScript:
camelCase.js
- No usar guiones (-) o guiones bajos (_) en nombres de archivos
Solución de Problemas 🔧
La extensión no genera estructura
- Verifica que tengas permisos de lectura en la carpeta
- Revisa la consola de depuración activando
debug: true
- Asegúrate de que no estés excluyendo demasiados archivos
Los patrones no funcionan como esperaba
- Usa la función "Probar Patrón" en la interfaz de configuración
- Verifica la sintaxis de tus expresiones regulares
- Recuerda que los patrones glob usan
*
para cualquier carácter y **
para cualquier profundidad
Problemas con la comparación de ramas
- No se muestran diferencias: Activa el modo debug para ver mensajes detallados
- Error al comparar: Verifica que ambas ramas existan y estén actualizadas
- Diferencias incompletas: Ajusta los límites de
maxFilesAnalyzed
y maxLinesPerFile
- Movimientos no detectados: La detección requiere >80% de similitud entre archivos
El proyecto es un repositorio Git pero los comandos no aparecen
- Asegúrate de que la carpeta tenga un directorio
.git
válido
- Verifica que Git esté instalado y disponible en tu PATH
- Intenta ejecutar
git status
en la terminal para confirmar
Licencia 📜
Este proyecto está licenciado bajo la Licencia Pública General GNU v3.0 - consulta el archivo LICENSE para más detalles.
Soporte 🤝
Si encuentras un error o quieres solicitar una característica, por favor crea un issue en el rastreador de issues.
Contribuir 🌟
¡Las contribuciones son bienvenidas! Por favor, lee nuestras pautas de contribución primero.
Apóyame con un Café ☕
Si encuentras útil esta herramienta y quieres apoyar su desarrollo, puedes invitarme un café a través de Buy Me a Coffee.
Hecho con ❤️ por Pablo Contreras