gulp globbing - como observar tudo abaixo do diretório


108

Esta é uma pergunta muito estúpida, mas eu realmente não consegui encontrar uma resposta satisfatória: Como faço para usar o gulp globbing para selecionar todos os arquivos em todos os subdiretórios abaixo de um determinado diretório?

Eu tentei:

'./src/less' './src/less/' './src/less/*'

Nenhum deles parece funcionar.

Respostas:


178

O padrão para todos os arquivos em todos os diretórios é geralmente ./src/less/**/*.*ou ./src/less/**/*, ambos devem funcionar.

De um modo geral, é melhor combinar extensões de arquivo específicas - mesmo que todas devam ser iguais - para evitar a captura de arquivos de sistema ou outro lixo. Nesse caso, você pode fazer ./src/less/**/*.lessapenas para .lessarquivos ou algo como .src/less/**/*.{less,css}para arquivos .lesse .css.

O site do Grunt tem uma referência muito boa para a maioria dos globs do minimatch. (Grunt e gulp usam minimatch , uma vez que é a biblioteca glob para praticamente tudo relacionado ao Node.)

Seria bom para gulp ou minimatch ter seus próprios documentos completos, mas isso é código aberto para você.


Vou verificar o site do Grunt, obrigado. O ponto sobre os arquivos de sistema definitivamente faz sentido. A razão pela qual quero que seja um pouco mais relaxado é porque o estou usando para assistir.
Jehan

1
Se ainda não o fez, recomendo enfaticamente aprender e usar o gulp-watchmódulo para assistir a arquivos, porque ele também pode monitorar novos arquivos. É um pouco mais trabalhoso para configurar, mas vale a pena, IMO.
OverZealous

8
Para referência futura, uso uma ferramenta em globtester.com , ela usa minimatch, que o gulp usa por meio de node-glob. "glob refere-se à sintaxe node-glob ou pode ser um caminho de arquivo direto." (fonte: github.com/gulpjs/gulp/blob/master/docs/API.md ) "[node-glob] usa a biblioteca minimatch para fazer sua correspondência." (fonte: github.com/isaacs/node-glob )
Daniel Dropik

1

'./src/less/**'parece funcionar. Ainda assim, se alguém tiver uma lista mais definitiva de todos os comandos globais, ficaria feliz em aceitar sua resposta e adicioná-la aos documentos do gulp. Agora você tem que ir para a documentação de um dos submódulos do gulp, que então fornece uma lista de páginas de manual. Seria bom ter uma referência direta, especialmente para designers que usam gole.


1
gulp.watch('./build/**', ...)parece desencadear (erroneamente ?) algumas mudanças no diretório pai (por exemplo, ./.git/). Adicionando extra / * na extremidade parece evitar esse problema: gulp.watch('./build/**/*', ...).
Medmunds

@medmunds encontrei resultados semelhantes. O glob TEM que terminar com um * ou um * .less específico. *. * não funcionará, pois falta nada sem uma extensão. Parece levar o . e combine usando correspondência de estilo POSIX; ou seja, se um arquivo não tiver um 'ponto', ele não corresponderá. Talvez devesse haver um caso especial para . como . via DIR no Windows corresponde a 'LICENSE', mas infelizmente ln *.*não. Dois significados diferentes para ' . ' é triste. *parece fazer o que precisamos. Um . O glob provavelmente nunca é o que o desenvolvedor realmente pretendia na minha opinião e pode precisar de um aviso lançado.
Andrew T Finnell,

@filthy_wizard - **é recursivo.
Steven Ventimiglia
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.