Use Tslint para verificar las importaciones no válidas entre paquetes y carpetas en su proyecto mecanografiado.
Validación automática y documentación de la arquitectura de paquetes (a través de tslint-folders-diagrams ).
Tslint-Folders es estable y se usa todos los días en las compilaciones de CI y en las cajas de desarrollo (Linux, Mac, Windows) para al menos un producto importante.
Ahorre tiempo dedicado a revisar el código manualmente por errores 'tontos' como:
file-name-casing de regla TSLint predeterminado solo permite 1 estilo) Usamos Semver para versiones. Para las versiones disponibles, ver lanzamientos.
yarn add tslint-folders
Edite su tslint.json para que tenga una entrada "rulesDirectory" que apunte a Tslint-Folders.
Normalmente esto sería como:
"rulesDirectory": "./node_modules/tslint-folders/dist/lib/"
Consulte tslint.tslint-Folders.json para obtener un ejemplo.
Las reglas TSLint están habilitadas y configuradas en tslint.json .
Consulte la sección Bajo tsf-folders-imports-between-packages en tslint.tslint-Folders.json o las pruebas unitarias para ver ejemplos.
Opcionalmente, puede dividir la configuración de Tslint-Pleas en un archivo separado, como tslint.tslint-folders.json . Para hacer referencia al archivo, agregue este código a tslint.json :
"extends": "./tslint.tslint-folders.json"
Suponiendo que Tslint ya esté en su lugar, ahora debería ver que las importaciones inesperadas (o pruebas deshabilitadas) sean marcadas por TSLINT. Esto debería funcionar como de costumbre para Tslint: en la línea de comandos, o en un editor como el código visual (puede requerir refrescar el editor).
Ver Tslint-Folders-Diagrams
Se puede generar automáticamente un diagrama a partir de la misma configuración utilizada para validar el código:

Consulte Tslint-Folders-Diagrams para más detalles.
Aquí hay un resumen de las reglas personalizadas actuales.
| ID de regla | Descripción |
|---|---|
| TSF-Folders-Disable-Test | Detectar una prueba unitaria deshabilitada, un conjunto de pruebas o prueba de integración. |
| TSF-Folders-File-Names | Valida la carcasa de los nombres de archivo. Similar a file-name-casing de regla estándar, excepto que admite múltiples carcasas permitidas y no permite nombres de archivos con caracteres no válidos (como espacios o comas). |
| TSF-Folders-Import-from-Disported-Folders | Detectar una importación de una carpeta no estándar como node_modules |
| TSF-Folders-Imports-between-Packages | Detectar una importación de un paquete de 'nivel superior': por ejemplo, importe de un paquete 'shell' de la aplicación cuando esté dentro de un paquete 'área'. Esta es la principal regla personalizada. También puede detectar cuándo un paquete tiene importaciones utilizando este nombre de paquetes (en lugar de una ruta relativa). |
| TSF-Folders-test-with-breakpoint | Detectar cuándo una prueba de integración tiene un punto de interrupción como browser.debug() |
| sitio | Url |
|---|---|
| Código fuente (GitHub) | https://github.com/mrseanryan/tslint-folders |
| Página de Github | https://mrseanryan.github.io/tslint-folders/ |
| npm | https://www.npmjs.com/package/tslint-folders |
Todas las reglas usan el mismo prefijo tsf-folders- .
Para dejar en claro a los desarrolladores que está involucrada una regla personalizada , todos los mensajes de las reglas también incluyen la ID de regla.
Algunas de estas reglas podrían ser reemplazadas por la configuración estándar de TSLINT. Sin embargo, tener reglas personalizadas ofrece mensajes más claros para ayudar al desarrollador a saber qué solucionar (o qué regla deshabilitar para ese código).
Algunas de las reglas no se tratan estrictamente de 'carpetas', sino que se incluyen aquí, ya que también parecen útiles.
Para más detalles y ejemplos, consulte las pruebas unitarias
Para trabajar en el código fuente para TSLint-Folders, hay algunos scripts:
| dominio | descripción |
|---|---|
| construcción de hilos | Construye las reglas a la carpeta 'Dist', desde donde se pueden ejecutar. |
| pelusa | Pelillas El código fuente de las reglas. |
| Inicio del hilo | Construye, prueba y vincula el código. |
| prueba de hilo | Prueba las reglas contra los archivos de especificaciones (*.lint) |
| prueba de hilo | Pruebe una sola regla contra los archivos de especificaciones (*.lint) |
Las pruebas unitarias para la regla tsf-folders-imports-between-packages están aquí.
Las pruebas unitarias usan datos de prueba para verificar los límites del paquete de un sitio web bastante típico.
La configuración coincidente se puede ver en tslint.tslint-Folders.json
Los datos de prueba se basan en un sitio web que utiliza múltiples paquetes:
| Nombre del paquete | Descripción |
|---|---|
| caparazón | El shell de la aplicación: este es el paquete de nivel superior y puede importar desde cualquier otro paquete. |
| del área | Un área de 'aplicación TODO' del sitio web, que está alojada dentro del shell. No debe importar desde la carcasa o de otros paquetes de 'área'. |
| contacto | Un área de 'Información de contacto' del sitio web, que está alojada dentro del shell. No debe importar desde la carcasa o de otros paquetes de 'área'. |
| paquete de cuadrícula | Una cuadrícula de UI que es utilizada por paquetes de área. No debe importar ningún otro paquete reconocido. |
| tensiones | Un paquete 'utiliza' utilizado por los paquetes de shell y de área. No debe importar ningún otro paquete reconocido. |
Validación de ejemplo : 'Shell' debería poder importar desde 'TODO-AREA', pero no al revés (el shell está en un nivel más alto de abstracción y también desea evitar dependencias de 2 vías).
Los plateadores de Tslint también pueden validar las importaciones entre subcarpetas de un paquete.
El paquete de 'área de TODO-AREA' de prueba está configurado con subcarpetas bastante típicas como 'componentes' y 'modelos'. Tslint.tslint-Folders.json se ha configurado para verificar las importaciones entre estas carpetas.
| Nombre de subfolder | Descripción |
|---|---|
| componentes | Carpeta de nivel superior de componentes de la interfaz de usuario. Puede importar desde cualquiera de las otras carpetas reconocidas. |
| Viewmodels | Carpeta de modelos de vista, utilizados por los componentes de la interfaz de usuario. Solo puede importar de modelos o utilidades. |
| modelos | Carpeta de modelos, utilizada por los modelos View. Solo puede importar de Utils. |
| tensiones | Una carpeta de 'utilización'. No debe importar ninguna otra carpeta reconocida. |
Validación de ejemplo : 'Componentes' deberían poder importar de 'modelos', pero no de la manera revelada (los componentes están en un nivel más alto de abstracción y también quieren evitar dependencias de 2 vías).
Vea el readme contribuyente.
Este proyecto se basa en el excelente proyecto de bibliotecas del proyecto Seeder.
El proyecto se inició para evitar tener que solucionar repetidamente problemas de codificación similares en grandes bases de código TypeScript.
ver aquí
Eso es todo. ¡Avíseme si esto es útil o cómo se puede mejorar!
Trabajo original de Sean Ryan - Mr.Sean.Ryan (en Gmail.com)
Este proyecto tiene licencia bajo la licencia MIT; consulte el archivo de licencia para obtener más detalles.