正常流程代码开发,编译打包,手动上传到linux文件夹下。 在掘金网站中发现scp2,打包完成后自动上传到服务器。 官网spmjs/node-scp2
bashnpm i scp2 --save
deploy.config.js
密码使用
readline
模块来动态输入密码,而不是将密码存储在配置文件中
js// 引入模块
const readline = require('readline');
const scpClient = require('scp2');
// 定义多个服务器信息(不包含密码)
const servers = [
{
host: '192.168.1.1', // 服务器 IP
username: 'root', // 服务器账号
path: '/mydata/data' // 部署的目标路径
}
];
// 使用 readline 接口获取用户输入
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
// 封装一个函数用于获取密码
function askPassword(query) {
return new Promise(resolve => {
rl.question(query, answer => {
resolve(answer);
rl.close();
});
});
}
// 部署函数
async function deploy(server) {
try {
const password = await askPassword(`请输入 ${server.host} 的密码: `);
server.password = password;
console.log(`正在部署到 ${server.host}...`);
scpClient.scp('./dist', server, function (err) {
if (err) {
console.log(`部署到 ${server.host} 失败: ${err}`);
} else {
console.log(`部署到 ${server.host} 成功!`);
}
});
} catch (error) {
console.log(`部署到 ${server.host} 出错: ${error}`);
}
}
// 对每个服务器进行部署
servers.forEach(server => {
deploy(server);
});
package.json增加命令
bas"scripts": { 。。。 "deploy": "npm run build && node ./deploy.config.js" },
本文作者:酷少少
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!