Node.js 使用gulp sftp仅上载更改的文件

Node.js 使用gulp sftp仅上载更改的文件,node.js,sftp,gulp,gulp-watch,Node.js,Sftp,Gulp,Gulp Watch,我有以下任务要完成: gulp.task('sync-frontend', /*['build-frontend'],*/ function() { if(config.layout.frontend.syncOnBuild) return gulp .src(config.layout.frontend.distDir + '/**') .pipe(changed(config.layout.frontend.distD

我有以下任务要完成:

gulp.task('sync-frontend', /*['build-frontend'],*/ function()
{

    if(config.layout.frontend.syncOnBuild)
        return gulp
            .src(config.layout.frontend.distDir + '/**')
            .pipe(changed(config.layout.frontend.distDir, {hasChanged: changed.compareSha1Digest}))
            //.pipe(debug())
            .pipe(gulp.dest(config.layout.frontend.distDir))
            .pipe(sftp
            ({

                host: config.sftp.host,
                port: config.sftp.port,
                user: config.sftp.user,
                pass: config.sftp.pass,
                remotePath: (config.layout.frontend.remotePath ? config.layout.frontend.remotePath : config.sftp.remotePath )

            }));

});
config.layout.frontend.distDir值为“httpdocs”

问题是,无论文件是否更改,都没有上载任何文件(我已尝试在默认情况下保留gulp的hasChange选项已更改。我始终获得以下输出:

[20:45:52] Using gulpfile /Storage/Portable/Sync/Projects/Prataria/web-prataria/gulpfile.js
[20:45:52] Starting 'sync-frontend'...
[20:45:52] gulp-sftp: No files uploaded
[20:45:52] Finished 'sync-frontend' after 503 ms

有什么想法吗?

我发现gulp.src上的格式需要加上前缀
/
,才能找到正确的文件夹。因此,尝试使用
/httpdocs
作为
config.layout.frontend.distDir

您可以将sftp与另一个库(如“gulp changed”或“gulp watch”)一起使用.

尝试使用该库。
较新的
功能只能用于上载较新的文件。该库的自述文件甚至包括一个示例吞咽任务,该任务显示了以下内容:

var gulp = require( 'gulp' );
var gutil = require( 'gulp-util' );
var ftp = require( 'vinyl-ftp' );

gulp.task( 'deploy', function () {

    var conn = ftp.create( {
        host:     'mywebsite.tld',
        user:     'me',
        password: 'mypass',
        parallel: 10,
        log:      gutil.log
    } );

    var globs = [
        'src/**',
        'css/**',
        'js/**',
        'fonts/**',
        'index.html'
    ];

    // using base = '.' will transfer everything to /public_html correctly
    // turn off buffering in gulp.src for best performance

    return gulp.src( globs, { base: '.', buffer: false } )
        .pipe( conn.newer( '/public_html' ) ) // only upload newer files
        .pipe( conn.dest( '/public_html' ) );

} );