Gulp globbing: cómo ver todo debajo del directorio

108

Esta es una pregunta bastante tonta, pero realmente no he podido encontrar una respuesta satisfactoria: ¿Cómo uso gulp globbing para seleccionar todos los archivos en todos los subdirectorios debajo de un directorio determinado?

He intentado:

'./src/less' './src/less/' './src/less/*'

Ninguno de ellos parece funcionar.

Jehan
fuente

Respuestas:

178

El patrón para todos los archivos en todos los directorios suele ser ./src/less/**/*.*o ./src/less/**/*debería funcionar.

En términos generales, es mejor hacer coincidir extensiones de archivos específicas, incluso si todas deberían ser iguales, para evitar la captura de archivos del sistema u otra basura. En ese caso, puede hacerlo ./src/less/**/*.lesssolo con .lessarchivos, o algo así como .src/less/**/*.{less,css}con archivos .lessy .css.

El sitio web de Grunt tiene una referencia bastante buena para la mayoría de los globs de minimatch. (Tanto Grunt como gulp usan minimatch , ya que es la biblioteca glob para casi todo lo relacionado con Node).

Sería bueno que gulp o minimatch tuvieran sus propios documentos completos, pero eso es de código abierto para ti.

Demasiado entusiasta
fuente
Revisaré el sitio web de Grunt, gracias. El punto sobre los archivos del sistema definitivamente tiene sentido. La razón por la que quiero que sea un poco más laxa es porque lo estoy usando para mirar.
Jehan
1
Si aún no lo ha hecho, le recomiendo que aprenda y utilice el gulp-watchmódulo para ver archivos, ya que también puede controlar la búsqueda de archivos nuevos. Es un poco más de trabajo para configurar, pero vale la pena, en mi opinión.
OverZealous
8
Para referencia futura, uso una herramienta en globtester.com , usa minimatch, que usa gulp a través de node-glob. "glob se refiere a la sintaxis nodo-glob o puede ser una ruta de archivo directa". (fuente: github.com/gulpjs/gulp/blob/master/docs/API.md ) "[node-glob] usa la biblioteca minimatch para hacer su comparación" (fuente: github.com/isaacs/node-glob )
Daniel Dropik
1

'./src/less/**'parece funcionar. Aún así, si alguien tiene una lista más definitiva de todos los comandos globbing, me complacería aceptar su respuesta y agregarla a los documentos de gulp. En este momento, debe ir a la documentación de uno de los submódulos de gulp, que luego le brinda una lista de páginas de manual. Sería bueno tener una referencia directa, especialmente para los diseñadores que usan gulp.

Jehan
fuente
1
gulp.watch('./build/**', ...)parece (¿mal?) desencadenar algunos cambios en el directorio principal (por ejemplo, ./.git/). Añadiendo el extra / * en el extremo parece evitar ese problema: gulp.watch('./build/**/*', ...).
medmunds
@medmunds He encontrado resultados similares. El glob TIENE que terminar con un * o un * .less específico. *. * no funcionará ya que se pierde algo sin una extensión. Parece tomar el . y combinar usando la combinación de estilos POSIX; lo que significa que si un archivo no tiene un 'punto', no coincidirá. Quizás debería haber un caso especial para . como . via DIR en Windows coincide con 'LICENCIA', pero desafortunadamente ln *.*no. Dos significados diferentes para ' . ' es triste. *parece hacer lo que necesitamos. Una . glob probablemente nunca sea lo que el desarrollador realmente pretendía en mi opinión y puede necesitar una advertencia.
Andrew T Finnell
@filthy_wizard - **es recursivo.
Steven Ventimiglia