Tengo una situación en la que intento usar grunt para eliminar una base de código, excluyendo carpetas específicas.grunt (minimatch/glob) exclusión de carpeta
grunt usa minimatch (similar a bsdglob) debajo del capó para hacer coincidir los archivos, pero parece que no puedo encontrar la forma de excluir una carpeta de un estilo .gitignore.
me gustaría ingerir esto:
ignoreme
y que cumplan estas:
/folder/path/here/to/something/ok.js
/another/folder/path.js
/test.js
pero no coincida con estas:
/folder/ignoreme/something.js
/folder/path/here/to/ignoreme/metoo/file.js
Esto coincidirá con todo, incluso ignoreme:
/**/*.js
por lo que pensé que podía hacer algo como:
/**/!(ignoreme)/**/*.js
pero que coincide con los archivos en la carpeta ignoreme.
Estoy acostumbrado a expresiones regulares, pero parece que no puede encontrar la manera de repetir un patrón o algo aquí - También probé cosas como:
/(!(ignoreme)|*)*/*.js
esperando que el contenedor se repetiría, Pero eso no No funciona, simplemente no combina todo.
¿Alguna manera de pasar un regex a rutas de archivos grupadas, o hacer que esto funcione para mí?
Actualización:
Así es como estoy actualmente se ocupan de este asunto:
var pattern = /\/ignoreme\//
var files = grunt.file.expandFiles(arrayOfFilesPassedToMinimatch).filter(function(f){
return !pattern.test(f)
})
Todavía estaría interesado si excluye las carpetas son posibles en minimatch.
El uso de 'map' es el resultado en' archivos' que contiene una matriz de valores 'TRUE' y' FALSE'. 'filter' establecerá correctamente' files' para que sea una lista de rutas filtradas. – deefour
Tienes razón, debes haber escrito a máquina por la noche. Se actualizó la muestra del código para que funcione. – Jesse