gulp globbing - comment regarder tout ce qui se trouve sous le répertoire

108

C'est une question assez stupide, mais je n'ai pas vraiment pu trouver de réponse satisfaisante: comment utiliser gulp globbing pour sélectionner tous les fichiers dans tous les sous-répertoires sous un certain répertoire?

J'ai essayé:

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

Aucun d'entre eux ne semble fonctionner.

Jehan
la source

Réponses:

178

Le modèle pour tous les fichiers dans tous les répertoires est généralement ./src/less/**/*.*ou ./src/less/**/*, l'un ou l' autre devrait fonctionner.

D'une manière générale, il est préférable de faire correspondre des extensions de fichiers spécifiques - même si elles doivent toutes être identiques - pour éviter de saisir des fichiers système ou d'autres fichiers indésirables. Dans ce cas, vous pouvez le faire ./src/less/**/*.lessuniquement pour les .lessfichiers, ou quelque chose comme les .src/less/**/*.{less,css}deux .lesset les .cssfichiers.

Le site Web Grunt a une assez bonne référence pour la majorité des globs minimatch. (Grunt et gulp utilisent tous deux minimatch , car c'est la bibliothèque glob pour à peu près tout ce qui concerne Node.)

Ce serait bien pour gulp ou minimatch d'avoir leurs propres documents complets, mais c'est open source pour vous.

Trop zélé
la source
Je vais consulter le site Web de Grunt, merci. Le point sur les fichiers système a vraiment du sens. La raison pour laquelle je veux qu'il soit un peu plus laxiste est que je l'utilise pour la montre.
Jehan
1
Si vous ne l'êtes pas déjà, je recommande vivement d'apprendre et d'utiliser le gulp-watchmodule pour regarder les fichiers, car il peut également gérer la surveillance de nouveaux fichiers. C'est un peu plus de travail à mettre en place, mais ça vaut le coup, IMO.
OverZealous
8
Pour référence future, j'utilise un outil sur globtester.com , il utilise minimatch, que gulp utilise par le biais de node-glob. "glob se réfère à la syntaxe node-glob ou il peut s'agir d'un chemin de fichier direct." (source: github.com/gulpjs/gulp/blob/master/docs/API.md ) "[node-glob] utilise la bibliothèque de minimatch pour faire sa correspondance." (source: github.com/isaacs/node-glob )
Daniel Dropik
1

'./src/less/**'semble fonctionner. Néanmoins, si quelqu'un a une liste plus définitive de toutes les commandes de globbing, je serais heureux d'accepter votre réponse et de l'ajouter à la documentation gulp. Pour le moment, vous devez aller à la documentation pour l'un des sous-modules de gulp, qui vous donne ensuite une liste de pages de manuel. Il serait bon d'avoir une référence directe, en particulier pour les concepteurs utilisant gulp.

Jehan
la source
1
gulp.watch('./build/**', ...)semble déclencher (mal?) certains changements dans le répertoire parent (par exemple, ./.git/). Ajout extra / * à la fin semble éviter ce problème: gulp.watch('./build/**/*', ...).
medmunds
@medmunds J'ai trouvé des résultats similaires. Le glob DOIT se terminer par un * ou un * .less spécifique. *. * ne fonctionnera pas car il manque quelque chose sans extension. Il semble prendre le . et correspondre en utilisant la correspondance de style POSIX; ce qui signifie que si un fichier ne contient pas de «point», il ne correspondra pas. Peut-être qu'il y aurait un cas particulier pour . comme .via DIR sur Windows correspond à «LICENCE», mais malheureusement ln *.*pas. Deux significations différentes de ' . ' est triste. *semble faire ce dont nous avons besoin. A . glob n'est probablement jamais ce que le développeur a vraiment prévu à mon avis et peut avoir besoin d'un avertissement.
Andrew T Finnell
@filthy_wizard - **est récursif.
Steven Ventimiglia