2017-05-09 3 views
1

Ich versuche, mehrere Dateien und Ordner mit gulp.src und gulp.dest aus meinem Basisverzeichnis . in ein neues Unterverzeichnis dist zu kopieren.Kopieren Sie mehrere spezifische Dateien und Ordner in ein anderes Verzeichnis mit Schluck

Das Basisverzeichnis ist das Stammverzeichnis eines Symfony-Projekts.

Hier ist meine gulpfile:

var files = [ 
    './app**/*.*', 
    './bin**/*.*', 
    './src**/*.*', 
    './tests**/*.*', 
    './var/', 
    './vendor/', 
    './composer.json'] 

gulp.task('distribute', function() { 
    return gulp.src(files , { base: '.' }).pipe(gulp.dest('./dist')); 
}); 

Ich verstehe einfach nicht, warum dies nicht funktioniert. Als Ergebnis bekomme ich einen dist Ordner mit den Inhalten der angegebenen Ordner. So fehlen app, bin, src usw. als root-Ordner.

Antwort

1

bewegen die Verzeichnisse selbst

auf Use gulp to select and move directories and their files Basierend verwenden ./ für die base Option und stellen Sie sicher, dass die Pfade korrekt sind:

var files = [ 
    './app/**/*.*', 
    './bin/**/*.*', 
    './src/**/*.*', 
    './tests/**/*.*', 
    './var/', 
    './vendor/', 
    './composer.json' 
]; 

gulp.task('distribute', function() { 
    return gulp.src(files , { base: './' }) 
    .pipe(gulp.dest('dist')); 
}); 

innerhalb der einzelnen Verzeichnisse, die Dateien verschieben

Do not Verwenden Sie die base Option und ändern Sie Ihre Pfade ein wenig.

var files = [ 
    'app/**/*.*', 
    'bin/**/*.*', 
    'src/**/*.*', 
    'tests/**/*.*', 
    'var/', 
    'vendor/', 
    'composer.json' 
]; 

gulp.task('distribute', function() { 
    return gulp.src(files) 
     .pipe(gulp.dest('./dist')); 
}); 

flexibel auf Bedrohung jedes Verzeichnis als Aufgabe

Wenn Sie den Ordner selbst verschieben möchten, stellen nur eine Aufgabe für jeden eine Aufgabe Generator-Funktion.

function moveDirTask(dir, dest) { 
    return function() { 
     return gulp.src(`${dir}/**/*`) 
      .pipe(gulp.dest(`${dest}/${dir}/`)); 
    }; 
} 

gulp.task('move-app', moveDirTask('app', 'dest')); 
gulp.task('move-bin', moveDirTask('bin', 'dest')); 
gulp.task('move-src', moveDirTask('src', 'dest')); 
gulp.task('move-tests', moveDirTask('tests', 'dest')); 
// etc. 

gulp.task('distribute', [ 
    'move-app', 
    'move-bin', 
    'move-src', 
    'move-tests' 
    // etc. 
], function() { 
    return gulp.src('composer.json') 
     .pipe(gulp.dest('dest')); 
}); 
+0

Danke für Ihre Antwort. Aber das kopiert den Inhalt der ersten 4 Ordner, aber nicht die Ordner selbst. Wie kann ich das archivieren? –

+0

@KevinGlier Ich habe die Antwort aktualisiert, um Ihr erwartetes Verhalten widerzuspiegeln. –

+0

Gibt es keine Möglichkeit, es wie den Befehl linux cp zu funktionieren? cp -r app src bin Tests composer.json dist /? –

Verwandte Themen