Как в gulp можно отследить в каком файле были изменения? Или возможно есть другие решения для отправки по ftp?

Я написал этот код для отправки файлов по ftp напрямую на сервер. Я бы хотел узнать можно ли как то сделать чтобы файлы отправлялись именно те которые я изменил в данный момент. В config.include я указал какие файлы отправлять по ftp.

Этот код работает но при любом изменение он отправляет все файлы. У меня появилась идея что возможно можно как то отследить файл который изменили и тогда бы я динамически в объект config записывал путь к файлу который должен передаться по ftp. Возможно у gulp watch есть подобный функционал или возможно есть другие решения?

Мне это нужно чтобы не ждать каждый раз по полминуты пока отправятся все файлы.

const { watch } = require('gulp');

path = {
    'theme' : '.',
}

// Подключаемые плагины
const FtpDeploy = require("ftp-deploy");
const ftpDeploy = new FtpDeploy();

const config = {
    user: "test",
    password: "test",
    host: "test.host",
    port: 21,
    localRoot: path.theme,
    remoteRoot: '.',
    include: ["*.php", "*.js", "*.css", "*.map" ,".*"],
    exclude: [,
        "node_modules/**",
        "node_modules/**/.*",
        ".git/**",
    ],
    deleteRemote: false,
    forcePasv: true,
    sftp: false,
};

function deploy() {
    return ftpDeploy.deploy(config, function (err, res) {
        if (err) console.log(err);
        else console.log("finished:", res);
    });
}

function watchFiles() {
    watch( ".", deploy );
}

exports.default = watchFiles; 

Ответы (1 шт):

Автор решения: Bakhtiyar

Я нашел решение. Плагин vynil-ftp решает мою проблему. Вот код если вам понадобиться. Он отправляет файлы только измененные в данный момент.

const { watch } = require('gulp');
let gulp = require( 'gulp' );

// Подключаемые плагины
let gutil = require( 'gulp-util' );
let ftp = require( 'vinyl-ftp' );

const conn = ftp.create({
    host:     'test.host',
    user:     'test_ftp',
    password: 'test',
    port: 21,
    parallel: 10,
    log:      gutil.log
});

const globs = [
    '*.html',
    '*.css',
    '*.js',
    '*.php',
];

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

// Ожидаем изменений
function watchFiles() {
    watch( ".", deploy );
}

exports.default = watchFiles; 
→ Ссылка