web-dev-qa-db-fra.com

Gulp - Cibler tous les fichiers d'un dossier et de ses sous-dossiers

Je voudrais pouvoir ajouter une tâche watch dans gulp à tous les fichiers js dans le frontend/js et tout autre fichier js ci-dessous

 gulp.watch('./frontend/js/**/*.js', ['browserify']);

Cela ne ciblera que les fichiers js d'un dossier en profondeur

28
Jamie Hutber

Il est censé correspondre à n'importe quel nombre de sous-répertoires:

** Si un "globstar" est seul dans une portion de chemin, il correspond à zéro ou plusieurs répertoires et sous-répertoires à la recherche de correspondances. Il n'analyse pas les répertoires de liens symboliques.

https://github.com/isaacs/node-glob

Avez-vous des répertoires de liens symboliques là-dedans?

Liens symboliques

Je ne pense pas que vous obtiendrez gulp pour traverser nativement vos répertoires de liens symboliques. Je vous recommande de jeter un œil à node.js fs.readdir recursive directory search et de voir si l'une de ces solutions peut être appliquée à votre cas d'utilisation. Rien dans la question ou les réponses ne traite spécifiquement des liens symboliques, donc je ne sais pas s'il y a une solution pour vous ou non. Si vous pouvez obtenir un tableau de chemins déréférencés en utilisant l'une de ces solutions, vous pouvez simplement passer le tableau à gulp.src().

36
JMM

Je viens de faire quelques tests - et cela fonctionne très bien pour moi.

J'ai actuellement la structure suivante -

--apps
  --scripts
  ----test.js
  ----test-folder
  ------test2.js
  ------test-folder-deep
  --------test3.js
  --myApp
  ----scripts-symlinked (symlinked to apps/scripts)
  ----gulpfile.js

J'ai configuré mon dossier de liens symboliques (sur Mac - à partir du dossier 'myApp') en utilisant:

ln -s /Users/kandrews/apps/scripts ./scripts-symlinked

Dans mon gulpfile.js J'ai les informations suivantes:

var gulp = require('gulp'),
    jshint = require('gulp-jshint');

gulp.task('jshint', function () {
    gulp.src('./scripts-symlinked/**/*.js')
        .pipe(jshint())
        .pipe(jshint.reporter('default'));
});

gulp.task('watch', function () {
    gulp.watch('./scripts-symlinked/**/*.js', ['jshint']);
});

Fonctionne parfaitement. J'ai également essayé cela dans un sous-répertoire ('scripts/symlinked-scripts') et j'ai également réussi.

6
Kelly J Andrews