DEV Community

Mayron Ceccon
Mayron Ceccon

Posted on

Deploy utilizando FTP

Olá!

Após algum tempo pesquisando uma forma de não precisar utilizar um cliente FTP (modo visual), encontrei o vinyl-ftp.

O vinyl-ftp é um script que abstrai a utilização de um cliente FTP (Filezilla, …).

Iremos utilizar o Gulp para automatizar o processo.

Primeiro é necessário instalar os pacotes gulp, gulp-util, vinyl-ftp:

npm install gulp
npm install gulp-util
npm install vinyl-ftp

Após a instalação, na pasta de seu projeto, crie o arquivo Gulpfile.js com o seguinte conteúdo:

'use strict';

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

var user = 'usuarioftp';
var password = 'senhaftp';
var host = 'ftp.site.com.br';
var port = 21;

/*
* Arquivos que serão ou não enviados ao servidor,
* para não enviar um arquivo ou pasta se deve inserir o ! (exclamação) antes do arquivo ou da pasta
*/
var localFilesGlob = ['./**/*',
                        '!node_modules'
                        '!.git'
                        '!composer.*'
                    ];

/*
* Pasta do servidor para onde os arquivos serão enviados
*/
var remoteFolder = '/public_html'

/*
* Função para conexão
*/
function getFtpConnection()
{
    return ftp.create({
        host: host,
        port: port,
        user: user,
        password: password,
        parallel: 5,
        log: gutil.log
    });
}

/*
* Tarefa que enviará os arquivos
*/
gulp.task('ftp-deploy', function()
{
    var conn = getFtpConnection();
    return gulp.src(localFilesGlob, {base: '.', buffer: false})
        .pipe(conn.newer(remoteFolder)) // only upload newer files
        .pipe(conn.dest(remoteFolder));
});

Para executar a tarefa utilize o comando abaixo:

gulp ftp-deploy

Dessa forma o upload dos arquivos irá acontecer. O ftp-deploy identifica quais arquivos foram alterados, assim, ele não envia arquivos não modificados.

Top comments (0)