前端自动打包部署服务器

安装依赖包

npm i shelljs ssh2-sftp-client --save-dev

在项目根目录新建 upload 文件夹config.js、index.js 和备份文件夹 dist1

前端自动打包部署服务器_第1张图片

在package.json添加 upload 命令

//package.json
"scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "upload": "node upload/index.js"
  },
config.js
module.exports = [//导出
    {
        ip: "xxxxxx",//主机ip地址
        username: 'xxxxx',//ssh用户名
        port: '22',//ssh端口号
        password: 'xxxxxx',//ssh密码
        path: '/xxx/xxx',//操作文件夹的配置地址路径
        rmovepath: '/xxx/xxx'//删除文件夹的配置地址路径
    }
];
index.js
const config = require('./config.js');//引入config文件
const shell = require('shelljs');
const path = require('path');
const Client = require('ssh2-sftp-client');
 
//打包npm run build
const compileDist = async () => {
    if (shell.exec(`npm run build`).code === 0) {
        console.log('打包成功');
    }
};
 
async function connectShell() {
    config.map(item => {//遍历
        const sftp = new Client();
        sftp.connect({//连接服务器
            host: item.ip, // 服务器 IP  ssh地址
            port: item.port,
            username: item.username,// ssh 用户名
            password: item.password
        }).then(() => {
            console.log('先执行拉下文件备份');
            //sftp.downloadDir('第一个参数为拉取的路径,第二个参数为保存在本地的文件夹路径')
            return sftp.downloadDir(item.path, path.resolve('__dirname', `../dist1/${item.ip}`));//path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径。
        }).then(() => {
            console.log('执行删除文件');
            //sftp.rmdir(删除服务器文件的路径)
            return sftp.rmdir(item.path, true);
        }).then(() => {
            console.log('执行上传文件');
            //sftp.uploadDir(第一个参数为本地上传文件路径,第二个为上传到服务器的路径)
            return sftp.uploadDir(path.resolve('__dirname', '../dist'), item.path);
        }).then(() => {
            console.log('上传完成');
            sftp.end();
        }).catch((err) => {
            console.log(err, '上传失败');
            sftp.end();
        });
    });
}
 
async function runStart() {
    await compileDist();//等待打包成功
    await connectShell();//提交上传文件
}
runStart();

执行命令打包自动部署

npm run upload

你可能感兴趣的:(前端,服务器,javascript)