site-ftp
Version:
Upload project file to FTP site. 上传项目文件到FTP站点。
110 lines (109 loc) • 4.28 kB
JavaScript
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports"], factory);
}
})(function (require, exports) {
"use strict";
exports.__esModule = true;
var SiteFtp;
(function (SiteFtp) {
var EasyFtp = require('easy-ftp');
var EasyFTP = new EasyFtp();
var Spinner = require("ora")();
var defaultConfig = {
host: 'localhost',
port: 21,
username: 'anonymous',
password: 'anonymous@',
type: 'ftp',
from: ['dist/**'],
to: '/public_html/',
rm: true
};
function exist(dir) {
return new Promise(function (resolve, reject) {
EasyFTP.exist(dir, function (exist) {
if (exist) {
resolve(exist);
}
else {
reject(exist);
}
});
});
}
function rm() {
return new Promise(function (resolve, reject) {
if (defaultConfig["rm"]) {
var dir_1 = (typeof defaultConfig["rm"] === "string" ? defaultConfig["rm"] : defaultConfig["to"]);
if (!dir_1) {
Spinner.fail('`rm` or `to` configuration error!');
Spinner.stop();
EasyFTP.close();
reject();
return;
}
exist(dir_1).then(function () {
Spinner.info('Deleting the ftp folder`' + dir_1 + '`');
EasyFTP.rm(dir_1, function (rm_err) {
if (rm_err) {
Spinner.fail('fail:' + rm_err);
Spinner.stop();
EasyFTP.close();
reject(rm_err);
}
else {
Spinner.succeed('Successfully deleted the ftp folder`' + dir_1 + '`');
resolve();
}
});
}, function () {
Spinner.warn('Directory not found, skipping delete directory:' + dir_1);
resolve();
});
}
else {
Spinner.succeed('Skip deleting the ftp folder');
resolve();
}
});
}
function connect(options) {
Spinner.start();
if (options !== null && typeof options === "object") {
defaultConfig = Object.assign(defaultConfig, options);
}
Spinner.info(JSON.stringify(options));
Spinner.info('Connecting...');
EasyFTP.connect({
host: defaultConfig["host"],
port: defaultConfig["port"],
username: defaultConfig["username"],
password: defaultConfig["password"],
type: defaultConfig["type"]
});
rm().then(function () {
Spinner.info('Uploading...');
EasyFTP.upload(defaultConfig["from"], defaultConfig["to"], function (upload_err) {
if (upload_err) {
Spinner.fail(upload_err);
}
else {
Spinner.succeed('Finished!');
}
Spinner.stop();
EasyFTP.close();
});
}, function (rm_err) {
Spinner.fail(rm_err);
Spinner.stop();
EasyFTP.close();
});
}
SiteFtp.connect = connect;
})(SiteFtp = exports.SiteFtp || (exports.SiteFtp = {}));
});