前端使用scp命令部署到服务器

由于没有弄自动部署环境,每次打包后,不是要把代码发给后端就是发给运维,比较麻烦。所以想到了命令部署。弄起来也很简单,使用nodejs 的scp即可
以 vue-cli创建的vue2项目为例

安装scp

npm install scp2 --save-dev

配置命令

然后在 package.json 里面的scripts选项配置命令 scp

  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint",
    "scp": "npm run build && node scp2.js"
  },

创建执行文件scp2.js

在项目根目录下创建scp2.js
代码如下

const scp = require('scp2');
const ora = require('ora');
const chalk = require('chalk'); //设置命令颜色的
const spinner = ora(chalk.blue('正在部署到服务器...'));  //显示加载

spinner.start();
    scp.scp('./dist/',{
        host:'127.0.0.1', // 服务器的地址
        port: 22,            // 服务器端口, 一般为 22
        username: 'root',       // 用户名
        password: '123456,     // 密码
        path: '/test/ui/dist/' //服务器存放文件路径
    }, err =>{
        if (!err) {
            console.log(chalk.green(`部署完成!`))
        } else {
            console.log(chalk.red(部署失败!`))
        }
  spinner.stop();
    })

ok,搞定。

多服务器部署优化

如果想一次部署多个服务器呢?其实也简单,但前提是不需要改api请求域名及环境配置。那就for循环调用好了。示例:

const scp = require('scp2');
const ora = require('ora');
const chalk = require('chalk');
const defaultPort='22'
const defaultUsername='root'
const defaultPassword='123456'
const defaultPath='/test/ui/dist/'
const delopyIps=[{host:'127.0.0.1',isEnd:false},{host:'127.0.0.2',isEnd:false}]
const spinner = ora(chalk.blue('正在部署到服务器...'));

spinner.start();
for(let i=0;i<delopyIps.length;i++){
    let {host,port,username,password,path}=delopyIps[i]
    scp.scp('./dist/',{
        host, // 服务器的IP地址
        port: port || defaultPort,            // 服务器端口, 一般为 22
        username: username || defaultUsername,       // 用户名
        password: password || defaultPassword,     // 密码
        path: path || defaultPath
    }, err =>{
        delopyIps[i].isEnd=true
        if (!err) {
            console.log(chalk.green(`${host}部署完成!`))
        } else {
            console.log(chalk.red(`${host}部署失败!`))
        }
        let hasNotEnd=delopyIps.find(item=>!item.isEnd)
        if(!hasNotEnd){
            spinner.stop();
            for(let i=0;i<delopyIps.length;i++){
                delopyIps[i].isEnd=false
            }
        }
    })
}

使用 npm run scp

  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

土豆片片

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值