¿Qué son los patrones glob?
En Javascript se utiliza mucho los Patrones Glob, estos permiten seleccionar un número de archivos con una sintaxis parecida a las expresiones regulares pero con menos caracteres comodín y menor complejidad. Un carácter comodín es él *
o el signo de ?
.
Una gran diferencia entre expresiones regulares es que los patrones glob se ocupan para buscar y filtrar archivos, y las expresiones regulares funcionan con cadenas de texto.
- Expresiones regulares trabaja con Texto
- Glob trabaja con archivos/directorios
¿Origen?
Tienen su origen en las primeras versiones de Unix, durante la versión 6 para ser exacto, 1969-1975, era el programa /etc/glob
, se usaba para seleccionar un conjunto de archivos en la shell, se llamaba glob
por ser la abreviación de global.
¿Cómo se usan?
También la funcionalidad es un poco diferente, por ejemplo el *
en una expresión regular coincide con la ausencia o cualquier número de repeticiones del carácter que le precede.
Por ejemplo a*
, indica cero o más repeticiones de la letra to
.
Otro ejemplo con carácter especial es .*
el cual indica cero o más repeticiones de cualquier carácter, excepto carácter de nueva de línea.
Por otro lado el carácter *
en un patrón glob representa la ausencia o cualquier número de repeticiones de cualquier carácter.
El ejemplo más utilizado es cuando queremos listar archivos con una determinada extensión, por ejemplo:
/$ ls *.js
Muy similar con lo que hacemos en el MS-DOS de windows:
C:\> dir *.js
No es necesario un carácter antes del *, como sucede con las expresiones regulares.
Aquí abajo un ejemplo donde tenemos un archivo de configuración de jasmine, Jasmine es un framework para realizar pruebas a tu código Javascript, este archivo de configuración permite seleccionar que archivos se usarán para ejecutar las pruebas:
{
"spec_dir": "spec",
"spec_files": [
"**/*[sS]pec.js"
],
"helpers": [
"helpers/**/*.js"
],
"stopSpecOnExpectationFailure": false,
"random": false
}
Algo que destacar es el uso de doble asterisco **
, esto indica cero o más coincidencias de cualquier subdirectorio y archivo, es decir, cero o más niveles de subdirectorios.
También podemos notar el uso de [sS]
, esta notación de glob indica que acepta sola una vez ya sea la s
minúscula o la S
mayúscula.
En el arreglo spec_files
, su primer elemento es un patrón glob, el cual busca en cualquier subdirectorio relativo al directorio definido en spec_dir
y que tenga cualquier conjunto de letras al principio pero que terminen con spec.js
either Spec.js
. Esta definición podría obtener las siguientes rutas de archivos:
- /spec/nombre-archivo.spec.js
- /spec/nombre-archivo.Spec.js
- /spec/helpers/nombre-archivo.spec.js
- /spec/helpers/nombre-archivo.Spec.js
- /spec/esto/es/otra/ruta/nombre-archivo.spec.js
- /spec/esto/es/otra/ruta/nombre-archivo.Spec.js
¿Dónde se utilizan?
En Javascript se utiliza:
- Para automatizar tareas que necesitan de la lectura y escritura de archivos
- Se utiliza mucho en node.js con herramientas como gulp y webpack
- Automatizado de pruebas
- Minificado y concatenado para el código en producción.