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/{,*/}*.less
se 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