2014-01-27 9 views
90

Ich versuche, gulp.src ein Array von Dateien zu übergeben, die ich damit umgehen möchte. Dies ist das Array, wie es steht.Warum mag es gulp.src nicht, ein Array vollständiger Pfade zu Dateien zu übergeben?

['bower_components/jquery/jquery.js', 
'bower_components/superscrollorama/js/greensock/TweenMax.min.js', 
'bower_components/superscrollorama/jquery.superscrollorama.js' ] 

Ich finde aber, dass gulp.src nicht zu mögen scheint und das dritte Element ist es nicht in das Ende Ziel machen, durch.

Ich habe festgestellt, dass alles funktioniert gut, wenn ich ein paar Wildcard-Zeichen wie diese vorstellen:

['bower_components/**/jquery.js', 
'bower_components/**/js/greensock/TweenMax.min.js', 
'bower_components/**/jquery.superscrollorama.js' ] 

Aber warum? Etwas mit der Funktionsweise von Globbing zu tun? Ich habe gegoogelt, kann es aber nicht herausfinden.

Vielleicht ist dies nicht der beabsichtigte Zweck der Globbing, aber es macht keinen Sinn für mich, dass es so funktionieren sollte. Kann jemand etwas Licht abwerfen?

Antwort

154

Wenn Sie ein Array voller Pfade übergeben, wird jede Datei unabhängig verarbeitet. Das Globbing weiß nicht, wo die Wurzel des Pfades ist (tatsächlich rät es basierend auf dem ersten Glob). Daher befindet sich jede Datei in dem Ordner, der es enthält, und der relative Pfad ist leer.

Es gibt jedoch eine einfache Lösung. Übergeben Sie ein Objekt mit dem Schlüssel base als zweites Argument zu gulp.src, und alles wird den richtigen relativen Pfad hat:

return gulp.src(['bower_components/jquery/jquery.js', 
       'bower_components/superscrollorama/js/greensock/TweenMax.min.js', 
       'bower_components/superscrollorama/jquery.superscrollorama.js' ], 
      {base: 'bower_components/'}) 
     .pipe(...); 
+20

auch: Das ist überhaupt nicht in dem großen Schluck docs erwähnt, müssen Sie durch Klicken auf [die docs für 'glob-stream'] (https://github.com/wearefractal/glob-stream) um das herauszufinden. – OverZealous

+6

Was passiert, wenn die Pfade nicht alle dieselbe Basis haben? Ich habe eine ähnliche Frage für dieses spezielle Szenario offen: [gulp src liest die benötigten Array-Werte der JSON-Datei nicht ein] (http://StackOverflow.com/questions/31579421/Gulp-SRC-Not-Reading-Required-Json-Files-Array -Werte) – Andre

+1

gleiche Frage von meiner Seite. Ich habe zwei verschiedene Basen für die Aufgabe, die ich ausführen muss –