gulp globbing- come guardare tutto sotto la directory


108

Questa è una domanda piuttosto stupida, ma non sono riuscito a trovare una risposta soddisfacente: come faccio a utilizzare gulp globbing per selezionare tutti i file in tutte le sottodirectory sotto una determinata directory?

Ho provato:

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

Nessuno di loro sembra funzionare.

Risposte:


178

Il modello per tutti i file in tutte le directory è solitamente ./src/less/**/*.*o ./src/less/**/*, entrambi dovrebbero funzionare.

In generale, è meglio abbinare estensioni di file specifiche, anche se dovrebbero essere tutte uguali, per evitare di acquisire file di sistema o altra spazzatura. In tal caso, puoi farlo ./src/less/**/*.lesssolo per i .lessfile o qualcosa di simile .src/less/**/*.{less,css}per entrambi .lesse .cssfile.

Il sito Web di Grunt ha un buon riferimento per la maggior parte dei glob di minimatch. (Sia Grunt che gulp usano minimatch , poiché è la libreria glob praticamente per tutto ciò che riguarda Node.)

Sarebbe bello per gulp o minimatch avere i propri documenti completi, ma per te è open source.


Controllerò il sito web di Grunt, grazie. Il punto sui file di sistema ha decisamente senso. Il motivo per cui voglio che sia un po 'più lassista è perché lo sto usando per l'orologio.
Jehan

1
Se non lo sei già, ti consiglio vivamente di imparare e utilizzare il gulp-watchmodulo per guardare i file, perché può gestire anche la ricerca di nuovi file. È un po 'più di lavoro da configurare, ma ne vale la pena, IMO.
OverZealous

8
Per riferimento futuro, utilizzo uno strumento su globtester.com , utilizza minimatch, che gulp utilizza tramite node-glob. "glob si riferisce alla sintassi nodo-glob o può essere un percorso di file diretto." (fonte: github.com/gulpjs/gulp/blob/master/docs/API.md ) "[node-glob] usa la libreria minimatch per eseguire la corrispondenza." (fonte: github.com/isaacs/node-glob )
Daniel Dropik

1

'./src/less/**'sembra funzionare. Tuttavia, se qualcuno ha un elenco più definitivo di tutti i comandi di globbing, sarei felice di accettare la tua risposta e aggiungerla ai documenti di gulp. In questo momento devi andare alla documentazione per uno dei sottomoduli di gulp, che poi ti dà un elenco di pagine man. Sarebbe utile avere un riferimento diretto, soprattutto per i progettisti che utilizzano gulp.


1
gulp.watch('./build/**', ...)sembra (mis?) innescare per alcuni cambiamenti nella directory principale (ad esempio, ./.git/). Aggiunta del extra / * alla fine sembra evitare questo problema: gulp.watch('./build/**/*', ...).
medmunds

@medmunds Ho trovato risultati simili. Il glob DEVE terminare con un * o uno specifico * .less. *. * non funzionerà poiché manca qualcosa senza un'estensione. Sembra prendere il . e abbinare utilizzando lo stile di corrispondenza POSIX; significa che se un file non contiene un "punto", non corrisponderà. Forse ci — pensava — fosse un caso speciale per . come . tramite DIR su Windows corrisponde a "LICENSE", ma sfortunatamente ln *.*no. Due significati diversi per ' . ' è triste. *sembra fare quello che ci serve. A . glob probabilmente non è mai ciò che lo sviluppatore intendeva veramente secondo me e potrebbe essere necessario un avviso lanciato.
Andrew T Finnell

@filthy_wizard - **è ricorsivo.
Steven Ventimiglia
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.