安装scp2

npm install scp2 --save-dev

配置服务器文件

项目根目录创建文件 .env.dev 文件 (测试环境变量)和创建 .env.prod 文件 (生产环境变量)

VUE_APP_SERVER_ID=0
VUE_APP_SERVER_ID=1

创建scp2自动化部署脚本

项目根目录创建 deploy/index.js 文件

//  deploy/index.js里面
const scpClient = require('scp2');
const ora = require('ora');
const chalk = require('chalk');
const server = require('./products');
const spinner = ora(
'正在发布到' +
(process.env.NODE_ENV === 'prod' ? '生产' : '测试') +
'服务器...'
); var Client = require('ssh2').Client; var conn = new Client();
conn
.on('ready', function() {
// rm 删除dist文件,\n 是换行 换行执行 重启nginx命令 我这里是用docker重启nginx
conn.exec('rm -rf /mdm/nginx/dist\ndocker restart nginx', function(
err,
stream
) {
if (err) throw err;
stream
.on('close', function(code, signal) {
// 在执行shell命令后,把开始上传部署项目代码放到这里面
spinner.start();
scpClient.scp(
'./dist',
{
host: server.host,
port: server.port,
username: server.username,
password: server.password,
path: server.path
},
function(err) {
spinner.stop();
if (err) {
console.log(chalk.red('发布失败.\n'));
throw err;
} else {
console.log(
chalk.green(
'Success! 成功发布到' +
(process.env.NODE_ENV === 'prod'
? '生产'
: '测试') +
'服务器! \n'
)
);
}
}
); conn.end();
})
.on('data', function(data) {
console.log('STDOUT: ' + data);
})
.stderr.on('data', function(data) {
console.log('STDERR: ' + data);
});
});
})
.connect({
host: server.host,
port: server.port,
username: server.username,
password: server.password
//privateKey: require('fs').readFileSync('/home/admin/.ssh/id_dsa')
});

package.json 配置 scripts 命令, 定义名称为 “deploy”

 "scripts": {
"serve": "vue-cli-service serve --mode dev",
"build": "vue-cli-service build --mode prod",
"deploy:dev": "npm run build && cross-env NODE_ENV=dev node ./deploy",
"deploy:prod": "npm run build && cross-env NODE_ENV=prod node ./deploy",
},

最新文章

  1. 你真的会玩SQL吗?查询指定节点及其所有父节点的方法
  2. 【摘】Mysql备份还原数据库之mysqldump实例及参数详细说明
  3. Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试
  4. linux上java路径设置
  5. CentOS7下用jdk1.7编译hadoop-2.7.1全过程详解
  6. Centos6.4 mysql安装与配置
  7. hdu 1042 N!(高精度乘法 + 缩进)
  8. C语言基础学习运算符-赋值运算符
  9. js返回当前时间的毫秒数
  10. OC语法4——自定义构造方法,description方法
  11. SQLite for C#
  12. office2010安装出错,windows installer服务不能更新一个或多个受保护的windows文件
  13. 提高PHP编程效率的方法
  14. U盘发现器
  15. JavaScript网页全屏API
  16. [ExtJS5学习笔记]第十二节 Extjs5开发遇到的问题列表记录
  17. Lua 基础之Weak Table(5)
  18. Python学习 ——正则表达式
  19. python ---16 初识面向对象
  20. 【译】第15节---数据注解-StringLength

热门文章

  1. React调试——visual studio code
  2. Spring声明式事务如何选择代理方式?
  3. GraphQL学习之原理篇
  4. 二十四 java 多线程一些知识点
  5. 【VS开发】【数据库开发】libevent入门
  6. hupu面试
  7. 乐字节Java循环:循环控制和嵌套循环
  8. 5、1 es 数据库和mysql 数据库同步 (Windows操作系统)
  9. vue图片点击放大功能
  10. springcloud超简单的入门3--负载均衡