medicine/Medicine-Server/deploy.mjs

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", "prisma", "admin", "public", "web"];
// 服务器上的目标解压目录
const remoteDirectory = "/www/wwwroot/Medicine-Server";
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, true);
});
const output = fs.createWriteStream(fileName);
// 压缩包写入文件
await zipFile.pipe(output);
await zipFile.finalize();
spinner.succeed("打包文件完成");
await upload();
}
main();