pattern node globs javascript regex node.js glob gruntjs

javascript - node - exclusión de la carpeta grunt(minimatch/glob)



glob pattern (1)

Tengo una situación en la que intento usar grunt para eliminar una base de código, excluyendo carpetas específicas.

grunt usa minimatch (similar a bsdglob) debajo del capó para hacer coincidir los archivos, pero parece que no puedo entender cómo hacer que un estilo .gitignore excluya de una carpeta.

Me gustaría ingerir esto:

ignoreme

y unir estos:

/folder/path/here/to/something/ok.js /another/folder/path.js /test.js

pero no coincide con estos:

/folder/ignoreme/something.js /folder/path/here/to/ignoreme/metoo/file.js

Esto coincidirá con todo, incluso ignoreme:

/**/*.js

Así que pensé que podría hacer algo como:

/**/!(ignoreme)/**/*.js

pero eso coincide con los archivos en la carpeta ignoreme.

Estoy acostumbrado a las expresiones regulares, pero parece que no puedo entender cómo repetir un patrón o algo aquí. También probé cosas como las siguientes:

/(!(ignoreme)|*)*/*.js

esperando que el contenedor se repita, pero eso no funciona, simplemente no puede hacer coincidir todo.

¿Hay alguna manera de pasar una expresión regular a las rutas de archivos gruñidos, o hacer que esto funcione para mí?

Actualizar:

Así es como estoy lidiando actualmente con este problema:

var pattern = ///ignoreme/// var files = grunt.file.expandFiles(arrayOfFilesPassedToMinimatch).filter(function(f){ return !pattern.test(f) })

Todavía estaría interesado si las exclusiones de carpetas son posibles en minimatch.


En la versión actualmente en desarrollo 0.4.0a, el método grunt.file.expand ahora admite exclusiones, y lo hace de una manera posiblemente menos compleja que la biblioteca de coincidencias de minimotos subyacente. Esto es posible porque grunt.file.expand acepta múltiples patrones (mientras que minimatch solo acepta uno).

De la documentación de grunt.file.expand :

Este método acepta patrones comodín separados por comas o una matriz de patrones comodín. Rutas que coinciden con los patrones que comienzan! se excluirá de la matriz devuelta. Los patrones se procesan en orden, por lo que el orden de inclusión y exclusión es significativo.

Eso significa que podría especificar [''/**/*.js'', ''!**/ignoreme/**''] y mientras el primer patrón agregaría todos los archivos .js al conjunto de resultados, el segundo patrón eliminaría todo /ignoreme/ archivos del conjunto de resultados.

Eche un vistazo a las pruebas de la unidad grunt.file.match si realmente tiene curiosidad.

Tenga en cuenta que la versión de grunt que ofrece esta funcionalidad no se ha lanzado oficialmente, pero si le interesa usarla en un proyecto, consulte ¿ Cuándo podré usar la función en desarrollo ''X''? Entrada de preguntas frecuentes