Mit gulp.js und vinyl ftp lässt sich eine einfache Methode ermöglichen mit der lokale Dateien mit einem Server synchronisiert werden. Dies ermöglicht z.B. ein einfaches Deployment. Auch gibt es den Fall, dass eine Website schon während der Entwicklung auf einem entfernten Server liegt. Da jedoch der entsprechende gulp-task die FTP-Zugriffsdaten benötigt und die gulpfile.js für gewöhnlich mit ins Git gepackt wird, sollte die Konfiguration in einer separaten Datei gespeichert werden. Diese Konfigurations-Datei kann dann ganz einfach in die .gitignore gepackt werden.

ftp.js

module.exports = {
    host: 'ftp.domain.tld',
    user: 'ftp-user',
    pass: 'password'
};

gulpfile.js

var gulp = require( 'gulp' );
var gutil = require( 'gulp-util' );
var ftp = require( 'vinyl-ftp' );
var ftpconfig = require('./config/ftp');

var globs = [
    'build/**'
];

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

    var conn = ftp.create( {
        host:     ftpconfig.host,
        user:     ftpconfig.user,
        password: ftpconfig.pass,
        parallel: 10,
        log:      gutil.log
    } );

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

} );

gulp.task('watch', function () {
    gulp.watch(globs', ['deploy']);
});

Neuen Kommentar schreiben