1、在项目根目录创建脚本文件夹deploy
2、在deploy文件夹下创建config.js和index.js文件
3、config.js内容
/*
读取开发变量
*/
const SERVER_ENV = process.env.NODE_ENV;
/*
定义服务器账号
*/
const SERVER_LIST = [{
env: 'test',
name: '测试环境',
domain: 'xxx.xxx.xxx',
host: '你的测试服务器ip地址',
port: 22,//测试服务器端口号
username: 'root',//服务器账号
password: '123456',//服务器密码
path: '/data/test/'//服务器部署根目录
},
{
env: 'prod',
name: '生产环境',
domain: 'xxx.xxx.xxx',
host: '你的生产服务器ip地址',
port: 22,//生产服务器端口号
username: 'root',//服务器账号
password: '123456',//服务器密码
path: '/data/prod/'//服务器部署根目录
}]
const SERVER_ITEM = SERVER_LIST.find(item => item.env == SERVER_ENV)//选择部署服务器
console.log('SERVER_ID:' + JSON.stringify(SERVER_ITEM))//打印服务器信息
module.exports = SERVER_ITEM;
4、index.js内容
首先安装scp2: npm install scp2 --save-dev
const scpClient = require('scp2');
const ora = require('ora');
const chalk = require('chalk');
const server = require('./config');
const spinner = ora(
'正在发布到' +
(process.env.NODE_ENV === 'prod' ? '生产' : '测试') +
'服务器...'
);
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'
)
);
}
}
);
最后在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",
},
运行npm run deploy:test可将项目部署至测试服务器
运行npm run deploy:prod可将项目部署至生产服务器