VUE项目自动化部署
一、安装 scp2,用ssh链接到服务器上
npm install scp2 --save-dev
是否有控制台inquirer.js,没得在装一个
npm install inquirer
二、新建js文件,例如 upload.js ,位置和 package.json平级即可,注意scp2,ora等版本,是否支持requie,import。
js
'use strict'
// 引入scp2
var client = require('scp2');
// 下面三个插件是部署的时候控制台美化所用 可有可无
const ora = require('ora');
const chalk = require('chalk');
const inquirer = require('inquirer');
//服务器链接信息
const server_list={
//比如这是测试环境
dev:{
host: '', // 服务器的IP地址
port: '22', // 服务器端口, 一般为 22
username: '', // 用户名
password: '', // 密码
path: '/www/wwwroot/test' // 项目部署的服务器目标位置
},
//这是生产环境
prod:{
host: '', // 服务器的IP地址
port: '22', // 服务器端口, 一般为 22
username: '', // 用户名
password: '', // 密码
path: '/www/wwwroot/test'
// 项目部署的服务器目标位置
}
};
inquirer.prompt([{
name: 'conform',
message: `是否需要上传文件到服务器?`,
type: 'list',
default: 0,
choices: [{name: '是',value: 1}, {name: '否',value: 0}]
},{
name: 'choose',
message: `选择上传的环境`,
type: 'list',
default: 0,
choices: ["测试环境","生产环境"]
}]).then(function (answers) {
if(answers.choose == 99){
console.log('取消上传');
}else{
//赋值环境信息
let send_server={};
let ora_chalk="";
if(answers.choose == "测试环境"){
send_server=server_list.dev;
ora_chalk="测试环境:正在发布到服务器中...";
}else if(answers.choose == "生产环境"){
send_server=server_list.prod;
ora_chalk="生产环境:正在发布到服务器中...";
}
//开启loading
const spinner = ora(chalk.green(ora_chalk));
spinner.start();
//链接服务器
client.scp('./dist/', send_server, err =>{
spinner.stop();
if (!err) {
console.log(chalk.green("项目发布完毕!"))
} else {
console.log(chalk.red("上传失败:"),err);
}
})
}
})
三、 package.json中添加 scripts 命令
bash
"upload": "node upload.js",
"deploy": "npm run build && npm run upload"
四、执行 打包并且上传
npm run deploy
上传已打包好的文件
npm run upload