2

私はgulpで次のタスクを持っています:

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-changed の 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

何か案は?

4

3 に答える 3

0

私はこれに遭遇し、gulp.src のフォーマットにプレフィックスを付けて./正しいフォルダーを見つける必要があることを発見しました。./httpdocsの値として試してくださいconfig.layout.frontend.distDir

于 2014-08-24T00:14:11.030 に答える
0

vinyl-ftpライブラリを使用してみてください。このnewer機能は、新しいファイルのみをアップロードするために利用できます。ライブラリの README には、実際の動作を示すサンプルの Gulp タスクも含まれています。

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

} );
于 2019-10-05T06:48:55.903 に答える