webapp node create code node.js gruntjs yeoman yeoman-generator

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

    1. /styles/*.less
    2. /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