Задача 1:
Скачать файл с данными и добавить его к выгружаемому проекту.
Задача 2:
Грохнуть папку на сервере и выгрузить проект.
//------------------------- gulpfile.js-----------------------------------------
'use strict';
const gulp = require('gulp');
const sequence = require('gulp-sequence');
const pubPth = 'public_html'; // Сюда проект собирается.
const verPth = 'versions'; // Папка с версиями.
const devPth = 'app/dev'; // Папка разработки.
gulp.task('deploy', sequence('dwnldt', 'upload')); // Таск выдающий ошибку.
lazyRequireTask('dwnldt', './tasks/dwnldt', { // Скачивает файл данных.
hst: 'хост', // Сам по себе работает без
// ошибок.
usr: 'логин',
psw: 'пароль',
prt: 21,
drd: '/domains/сайт/dir', // Из этой папки надо скачать
// файлы с данными
dld: 'app/dev/htmlphp/dir/', // в эту папку
dst: pubPth + '/dir' // и отправить копию в эту.
});
lazyRequireTask('upload', './tasks/upload', { // Грохает папку на сервере,
// выгружает проект.
hst: 'хост', // Сам по себе работает без
// ошибок.
usr: 'логин',
psw: 'пароль',
prt: 21,
prl: 9,
pth: '/domains/сайт',
bs_: pubPth,
glb:[pubPth + '/**/*',
pubPth + '/**/.htaccess'],
pjn: 'package.json',
vnm: verPth,
src:['app/**/*',
'tasks/**/*',
'gulpfile.js',
'package.json',
'aa_tasks.js',
'aa_changes.js']
});
function lazyRequireTask(taskName, Pth, options) {
options = options || {};
options.taskName = taskName;
gulp.task(taskName, function(callback) {
let task = require(Pth).call(this, options);
return task(callback);
});
}
//------------------------- ФАЙЛЫ ----------------------------------------------
//----------------------- ./tasks/dwnldt ---------------------------------------
'use strict';
const gulp = require('gulp');
const fClient = require('ftp-client');
const fs = require('fs');
const isDevelopment = !process.env.NODE_ENV || process.env.NODE_ENV == 'development';
module.exports = function(options) {
return function (cb) {
if (!isDevelopment){
var cfg = {
host: options.hst,
user: options.usr,
password: options.psw,
port: options.prt
};
var opt = {
logging: 'basic'
};
var newFclient = new fClient(cfg, opt);
newFclient.connect(function () {
newFclient.download(options.drd, options.dld, {
overwrite: 'all'
}, function (result) {
console.log(result);
gulp.src(options.dld + '**/*')
.pipe(gulp.dest(options.dst));
});
});
}
cb();
};
};
//----------------------- ./tasks/upload ---------------------------------------
'use strict';
const gulp = require('gulp');
const vFtp = require('vinyl-ftp' );
const fs = require('fs');
const isDevelopment = !process.env.NODE_ENV || process.env.NODE_ENV == 'development';
module.exports = function(options) {
return function (cb) {
if (!isDevelopment){
var cfg = {
host: options.hst,
user: options.usr,
password: options.psw,
parallel: options.prl,
port: options.prt
};
var vftpCreate = vFtp.create(cfg);
vftpCreate.rmdir(options.pth, function(e){
if (e === undefined) {
// using base = '.' will transfer everything to /public_html correctly
// turn off buffering in gulp.src for best performance
gulp.src(options.glb, {base: options.bs_, buffer: false})
.pipe(vftpCreate.newer(options.pth)) // only upload newer files
.pipe(vftpCreate.dest(options.pth));
}else console.log('BLABLALBA ' + e);
});
}
fs.readFile(options.pjn, function(err, data) {
if (err) throw err;
else {
let packageJson = JSON.parse(data.toString());
gulp.src(options.src, {base: '.', buffer: false})
.pipe(gulp.dest(options.vnm + '/' + packageJson.version));
console.log('upload in: ' + options.vnm + '/' + packageJson.version);
}
});
cb();
};
};
//------------------------------------------------------------------------------