2017-08-01 1 views
0

J'essaie de configurer mon gulpfile.js pour concaténer tous les fichiers .js dans mon dossier src/js et nommez-les en fonction de leur dossier parent.Concaténer et renommer les fichiers en fonction du nom du répertoire avec Gulp

Exemple de structure de dossier:

project 
| 
+-assets 
| | 
| +-app.min.js 
| | 
| +-vendor.min.js 
| 
+-src 
| | 
| +-app 
| | | 
| | +-file1.js 
| | | 
| | +-file2.js 
| | 
| +-vendor 
| | | 
| | +-file1.js 
| | | 
| | +-file2.js 

je peux le configurer pour des dossiers spécifiques et ont des noms de fichiers spécifiques pour chacun d'eux, mais je voudrais une fonction qui peut fonctionner grâce à une variation indéfinie des dossiers et des noms.

Ce que j'utilisais avant était:

gulp.task('js', function() { 
    gulp.src('src/js/app/**/*.js') 
     .pipe(plumber(plumberErrorHandler)) 
     .pipe(jshint()) 
     .pipe(jshint.reporter('fail')) 
     .pipe(concat('app.min.js')) 
     .pipe(uglify()) 
     .pipe(gulp.dest('assets/js')) 
}); 

Répondre

0

mais je voudrais une fonction qui peut fonctionner grâce à une variation indéfinie des dossiers et des noms.

Personnellement, je ne connais pas un moyen facile de le faire. Ce que je vais habituellement pour résoudre mon problème est de définir une variable de chemin avec le nom de ces dossiers et construire ma tâche comme ça.

var path = [ 'app', 'vendor' ]; 

gulp.task('js', function() { 
    for (var i = 0; i < path.length; i++) { 
    var p = path[i]; 
    gulp.src('src/' + p + '/**/*.js') 
     .pipe(plumber(plumberErrorHandler)) 
     .pipe(jshint()) 
     .pipe(jshint.reporter('fail')) 
     .pipe(concat(p + '.min.js')) 
     .pipe(uglify()) 
     .pipe(gulp.dest('assets/js')) 
    } 
}); 

J'ai entendu dire que gulp-path pourrait faire ce que vous voulez, mais je l'ai personnellement pas regardé en elle.