- 项目根路径下创建upload.server.js文件,配置如下:
const server = {
host: '***.***.***.***',
port: '***',
username: '',
password: '',
pathNmae: 'dist',
locaPath:'./dist/'
}
const client = require('scp2');
const ora = require('ora');
const readline = require('readline-sync')
const spinner = ora('正在发布到服务器...');
const Client = require('ssh2').Client;
const conn = new Client();
server.username = readline.question('username:');
server.password = readline.question('password:',{hideEchoBack: true});
console.log('正在建立连接');
conn.on('ready', function () {
console.log('已连接')
if(!server.pathNmae || server.pathNmae==='/'){
console.log('连接已关闭');
conn.end()
return false;
}
conn.exec('rm -rf /home/' + server.pathNmae + '/*', function (err, stream) {
console.log('删除文件');
stream.on('close', function (code, signal) {
console.log('开始上传')
spinner.start();
client.scp(server.locaPath, {
"host": server.host,
"port": server.port,
"username": server.username,
"password": server.password,
"path": '/home/' + server.pathNmae
}, err => {
spinner.stop();
if (!err) {
console.log('项目上传成功');
} else {
console.log("err", err)
}
conn.end()
})
})
})
}).connect({
host: server.host,
port: server.port,
username: server.username,
password: server.password
});
- powershell下执行以下指令
npm install scp2
npm install readlind-sync
npm install ssh2
node upload.server.js
- 也可以将上传功能集成到 package.json 中的scripts build中去,实现一键编译打包上传