69 lines
1.9 KiB
JavaScript
69 lines
1.9 KiB
JavaScript
import fs from "fs-extra";
|
|
import archiver from "archiver";
|
|
import { Client } from "ssh2";
|
|
import ora from "ora";
|
|
|
|
// 配置SSH连接信息
|
|
const sshConfig = {
|
|
host: "139.224.213.131",
|
|
port: 22,
|
|
username: "root",
|
|
password: "tTkSkcbrTfmFOE4K",
|
|
};
|
|
const spinner = ora();
|
|
|
|
// 要打包的文件目录列表
|
|
const fileDirectoryList = ["dist"];
|
|
|
|
// 服务器上的目标解压目录
|
|
const remoteDirectory = "/www/wwwroot/web.yuelian.flameby.com";
|
|
const fileName = "uploadRes.zip";
|
|
async function upload() {
|
|
// 连接ssh
|
|
const conn = new Client();
|
|
conn
|
|
.on("ready", () => {
|
|
spinner.start("开始上传文件");
|
|
conn.sftp((err, sftp) => {
|
|
if (err) throw err;
|
|
sftp.fastPut(fileName, `${remoteDirectory}/${fileName}`, (err) => {
|
|
if (err) throw err;
|
|
spinner.succeed("上传文件完成");
|
|
conn.exec(`cd ${remoteDirectory} && unzip -o ${fileName} -d ${remoteDirectory}`, (err, stream) => {
|
|
if (err) throw err;
|
|
stream.on("close", (code, signal) => {
|
|
spinner.succeed("解压文件完成");
|
|
conn.end();
|
|
});
|
|
stream.on("data", (data) => {
|
|
console.log(data.toString());
|
|
});
|
|
});
|
|
});
|
|
});
|
|
conn.on("close", (err) => {
|
|
// fs.removeSync(fileName);
|
|
// spinner.succeed("删除本地文件");
|
|
spinner.succeed("断开连接");
|
|
});
|
|
})
|
|
.connect(sshConfig);
|
|
}
|
|
|
|
async function main() {
|
|
fs.removeSync(fileName);
|
|
spinner.start("开始打包文件");
|
|
const zipFile = archiver("zip", { zlib: { level: 9 } });
|
|
fileDirectoryList.forEach(async (dir) => {
|
|
await zipFile.directory(dir, false);
|
|
});
|
|
const output = fs.createWriteStream(fileName);
|
|
// 压缩包写入文件
|
|
await zipFile.pipe(output);
|
|
await zipFile.finalize();
|
|
spinner.succeed("打包文件完成");
|
|
await upload();
|
|
}
|
|
|
|
main();
|