¿Cómo se usan los patrones glob de la shell de linux en Javascript?

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 el *o el signo de ?.

Tienen su origen en las primeras versiones de Unix, durante la version 6 para ser especificos, 1969-1975, era el programa /etc/glob, se usa para seleccionar un conjunto de archivos en la shell, se llamaba globpor ser la abreviacion de global.

Una gran diferencia entre expresiones regulares es que los patrones globse ocupan para buscar y filtrar archivos, las expressiones regularesfuncionan con cadenas de texto, ademas la funcionalidad es un poco diferente, por ejemplo el *en una expression regular coincide con la ausencia o cualquier numero de repeticiones del caráctero carácter especialque le precede, por ejemplo a*indica cero o más repeticiones de la letra a. Otro ejemplo es .*el cual indica cero o más repeticiones de cualquier caracter excepto carácter de nueva de línea.

Por otro lado el caracter *en un patron glob representa la ausencia o cualquier numero de repeticiones de cualquier caracter.

El ejemplo más utilizado es cuando queremos listar archivos con una determinada extension, por ejemplo:

/$ ls *.js

Muy similar con lo que hacemos en el MS-DOS de windows:

C:\> dir *.js

En Javascript se utiliza para automatizar tareas que nesecitan de la lectura y escritura de archivos, se utiliza mucho en node.js, gulp, webpack, automatizado de pruebas, minificado y concatenado para el código en desarrollo.

Aquí abajo un ejemplo, tenemos un archivo de configuración de jasmine, el cual 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, es decir, cero o más niveles de subdirectorios.

Tambien podemos notar el uso de [sS], esta notación de glob indica que acepta sola una vez ya sea la sminúscula o la Smayúscula.

En el arreglo spec_files, el primer elemento es un patron glob, el cual busca en cualquier subdirectorio relativo al directorio definido en spec_diry que tenga cualquier conjunto de letras al principio pero que terminen con spec.jso Spec.js. Esta definición podria 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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.