// 安装对应依赖
// npm i scp2@0.5.0 ora@4.0.0
const path = require("path");
// 引入scp2库
const scpClient = require("scp2");
// node模块 - node.js 命令行环境的 loading效果和显示各种状态的图标
const ora = require("ora");
// deploy.js
const serverConfig = {
dev: {
host: "dev_server_ip",
},
prv: {
host: "127.0.0.1",
port: "22",
username: "root",
password: "123456",
path: "/www/deploy/path",
},
prd: {
host: "prd_server_ip",
},
};
const env = process.argv.pop();
if (!serverConfig[env]) {
console.error(`Unsupported environment: ${env}`);
process.exit(1);
} else {
// 获取当前环境对应的提示名称,使用模糊匹配
const currentEnvName = getEnvDescription(env);
const server = serverConfig[env];
console.log(server)
console.log("当前发布环境:", currentEnvName);
// node 终端提示语,process.env:当前进程环境
const spinner = ora(`正在发布到${currentEnvName}服务器...`);
// loading
spinner.start();
// 执行scp2库,上传文件
// 第一个参数:要上传到服务器的文件
// 第二个参数:服务器配置
// 第三个参数:上传回调函数
scpClient.scp(
path.resolve(__dirname, "dist"),
{
host: server.host,
port: server.port,
username: server.username,
password: server.password,
path: server.path,
},
function (err) {
spinner.stop();
if (err) {
console.log("发布失败.\n");
throw err;
} else {
console.log(`Success! 成功发布到${currentEnvName}服务器! \n`);
}
}
);
}
// 辅助函数:实现模糊匹配获取环境描述
function getEnvDescription(envKey) {
const serverEnvMap = {
dev: "测试",
prv: "预发",
prd: "正式",
};
for (const key in serverEnvMap) {
if (key.toLowerCase().includes(envKey.toLowerCase())) {
return serverEnvMap[key];
}
}
// 如果没有找到匹配项,返回默认值或处理错误
return "未知环境";
}
标签:node,const,server,host,env,path,服务器,远程
From: https://www.cnblogs.com/brujie/p/18244359