由于没有弄自动部署环境,每次打包后,不是要把代码发给后端就是发给运维,比较麻烦。所以想到了命令部署。弄起来也很简单,使用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

原文地址:http://www.cnblogs.com/Sultan-ST/p/16914244.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性