1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- const client = require("ssh2-sftp-client");
- const path = require("path");
- const fs = require("fs");
- const { execSync } = require("child_process");
- (async function Init() {
- const localDir = "dist/";
- const dirPath = path.resolve(__dirname, "./" + localDir);
- const list = [];
- /**
- * 获取localDir下的所有文件路径
- * @param {string} pathDir
- */
- async function getFiles(pathDir) {
- const dirList = fs.readdirSync(pathDir) || [];
- for (let i = 0; i < dirList.length; i++) {
- const P = [pathDir, dirList[i]];
- const stat = fs.lstatSync(P.join("\\"));
- if (!stat.isDirectory()) {
- list.push(P);
- } else getFiles(P.join("\\"));
- }
- }
- async function upServer() {
- const config = {
- path: {
- // 远程地址
- romotePath: "/var/www/test",
- // 本地地址
- localPath: path.resolve(__dirname, "./dist"),
- },
- romote: {
- // 服务器 ip 地址
- host: "123.57.195.226",
- // 端口号,默认是 22
- port: 22,
- // 登录的用户名
- username: "root",
- // 登录密码
- password: "581100Li.",
- },
- };
- const sftp = new client();
- try {
- await sftp.connect(config.romote);
- const romotePath = config.path.romotePath;
- const isCss = await sftp.exists(romotePath + "/css");
- const isFonts = await sftp.exists(romotePath + "/fonts");
- const isJs = await sftp.exists(romotePath + "/js");
- const isIndexHtml = await sftp.exists(romotePath + "/index.html");
- isCss && await sftp.rmdir(romotePath + "/css", true);
- isFonts && await sftp.rmdir(romotePath + "/fonts", true);
- isJs && await sftp.rmdir(romotePath + "/js", true);
- isIndexHtml && await sftp.delete(romotePath + "/index.html", true);
- console.log("已清空原有文件");
- await sftp.uploadDir(config.path.localPath, romotePath);
- console.log("上传完成");
- // 断开连接
- sftp.end();
- console.log("断开链接");
- } catch (err) {
- console.log("更新失败", err);
- }
- }
- /**
- * 上传git
- */
- function execFun() {
- try {
- execSync("git add .");
- execSync('git commit -m "提交"');
- execSync("git push");
- console.log("上传git---完成");
- } catch (e) {
- console.log("上传git---失败");
- console.error(e);
- }
- }
- try {
- execFun();
- await getFiles(dirPath);
- console.log("获取文件路径---完成");
- await upServer();
- } catch (err) {
- console.log("数据上传oss---失败");
- }
- })();
|