node.js - node - yeoman yo angular
¿Qué significa `{,*/}` en las rutas de Gruntfile.js? (4)
En Gruntfile.js , tengo:
watch: {
styles: {
files: [
''<%= yeoman.app %>/styles/{,*/}*.less''
],
tasks: [''copy:styles'', ''autoprefixer'']
}
}
Para el camino, ¿qué significa {,*/} hecho? ¿En qué se diferencia el uso de asteriscos dobles **/ ?
Creo que estás usando un minimatch allí.
El doble asterisco es un globo que causa recursión en subdirectorios.
El único asterisco solo coincide con 0 o más caracteres en el directorio actual (coincide con todos los caracteres excepto el carácter de barra).
Por ejemplo, a / ** / d coincidirá con a / b / c / d.
Este patrón se usa ampliamente en las plantillas de yeoman: significa buscar solo un nivel dentro de la jerarquía de carpetas. Se usa principalmente por motivos de rendimiento, ya que ver demasiados archivos a la vez puede ser lento (o incluso imposible).
Estos son patrones globales para Grunt, soportados por las bibliotecas node-glob y minimatch .
Básicamente:
-
*coincide con cualquier número de caracteres, pero no/ -
**coincide con cualquier número de caracteres, incluido/, siempre que sea lo único en una parte de la ruta -
{}permite una lista de expresiones "o" separadas por comas
Entonces, styles/{,*/}*.less coincide con los siguientes archivos:
- MENOS archivos dentro del directorio de
styles - MENOS archivos dentro de subdirectorios directos del directorio de
styles(pero no más profundos)
La respuesta es globbing-patterns .
Las otras respuestas ya respondieron lo que significa {,*/}* .
Pero la diferencia entre **/ y {,*/}* es la profundidad de la carpeta .
/styles/{,*/}*.lessse ha dividido en dos situaciones-
/styles/*.less -
/styles/*/*.less
-
Por ejemplo
/styles/{,*/}*.less coincidirá con /styles/x.less (situación 1)
/styles/{,*/}*.less también coincidirá con /styles/test/x.less (situación 2)
Pero /styles/{,*/}*.less no puede coincidir con /styles/test/test1/x.less
Pero /styles/**/*.less puede hacer eso