2014-07-08 6 views
8

Ich habe in letzter Zeit mit Schluck experimentiert und hatte viel Erfolg, aber jetzt bin ich ratlos.Wie kopiert man einen Ordner über SSH mit Gulp?

Ich habe Schluck alles bauen, und ich möchte einen Ordner später hochladen.

gulp.task('deploy', ['clean', 'build'], function() { 
    var privateKeyPath = getUserHome() + '/.ssh/id_rsa'; 

    gulp.src('public/dist') 
     .pipe(scp({ 
      host: 'myhost', 
      username: 'user', 
      dest: '/home/user/test', 
      agent: process.env['SSH_AUTH_SOCK'], 
      agentForward: true, 
      watch: function(client) { 
       client.on('write', function(o) { 
        console.log('write %s', o.destination); 
       }); 
      } 
     })).on('error', function(err) { 
      console.log(err); 
     }); 
}); 

Leider, wenn ich das tue, bekomme ich folgende Fehlermeldung:: Ich habe eine deploy Aufgabe für diese gulp-scp2 mit erstellt

Error: Content should be buffer or file descriptor 

Wie kann ich einen Ordner über SSH mit schluck kopieren?

+1

Es sieht nicht wie 'schlucke-scp2' ist eine gültige Zug-Plugin, da es auf der [schluck Website nicht aufgeführt ist ] (http://gulpjs.com/plugins/). Hast du [gulp-sftp] (https://www.npmjs.org/package/gulp-sftp/) ausprobiert? Es sieht wie eine besser gestaltete Lösung aus und sollte das gleiche Ziel erreichen. – OverZealous

+0

Warum benutzt du kein Repository und drückst dort was du willst? Ich denke, das ist der beste Weg, Dateien in der Produktion bereitzustellen. – avcajaraville

Antwort

10

Ich habe eine Lösung zu finden, durch die Nutzung des Knoten scp2 Bibliothek am Ende:

scpClient = require('scp2'); 

gulp.task('scp', [], function (cb) { 
    scpClient.scp('local_folder', { 
     "host": "remote_host", 
     "port": "remote_port", 
     "username": "username_on_remote", 
     "path": "/path/on/remote", 
     "agent": process.env["SSH_AUTH_SOCK"], 
     "agentForward": true 
    }, cb) 
});