簡體   English   中英

如何使用 Gulp 通過 SSH 復制文件夾?

[英]How to copy a folder over SSH with Gulp?

我最近一直在嘗試 gulp,並且取得了很多成功,但現在我被難住了。

我已經gulp構建了所有東西,然后我想上傳一個文件夾。 我使用gulp-scp2為此創建了一個deploy任務:

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

不幸的是,當我這樣做時,我收到以下錯誤:

Error: Content should be buffer or file descriptor

如何使用 gulp 通過 SSH 復制文件夾?

我確實通過利用節點scp2庫找到了解決方案:

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

作為上一個答案,我直接使用節點版本結束,這個版本將以 gulp 4+ 的方式工作:

首先安裝lib(確保在項目本地安裝,全局版本不適用於gulp文件):

 npm install scp2

然后在 gulp 文件中:

 var scpClient = require('scp2');


 function deploySCP2(){
    return scpClient.scp(paths.buildAll, {
       "host": "host",
       "username": "username",
       "password": "password",
       "path": "path"
    }, function(err) {  })
 }

這將立即起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM