2014-07-08 31 views
8

Ostatnio eksperymentowałem z łykiem i odniosłem spory sukces, ale teraz jestem zaskoczony.Jak skopiować folder przez SSH z Gulp?

Mam wszystko na uszy i chcę później przesłać folder. Stworzyłem deploy zadanie to korzystając gulp-scp2:

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); 
     }); 
}); 

Niestety, kiedy to zrobić, pojawia się następujący błąd:

Error: Content should be buffer or file descriptor 

Jak mogę skopiować folder nad SSH przy użyciu łyk?

+1

nie wygląda jak 'łyk-scp2' jest ważny plugin łyk, ponieważ nie jest wymienione na stronie internetowej [haustem ] (http://gulpjs.com/plugins/). Czy próbowałeś już [gulp-sftp] (https://www.npmjs.org/package/gulp-sftp/)? Wygląda na lepiej zaprojektowane rozwiązanie i powinien osiągnąć ten sam cel. – OverZealous

+0

Dlaczego nie używasz repozytorium i nie wciskasz tam, co chcesz? Myślę, że to najlepszy sposób na wdrożenie plików w produkcji. – avcajaraville

Odpowiedz

10

zrobiłem skończyć znalezienia rozwiązania, wykorzystując węzeł scp2 Biblioteka:

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) 
});