前端部署从未如此简单、迅速
前端也可以直接终端部署,无需开启连接工具,直接输入指令快速部署。
本地打包、压缩文件、上传服务器、解压、启动(java)、git打版本标签
脚手架插件
- 使用 yargs执行指令交互
const yargs = require("yargs/yargs");
const cli = yargs();
cli
.usage("ben-cli-test [command] <options>") // 输出类型
.demandCommand(1, "szqy-cli@" + context.benCliVersion) // 最少输入参数
.strict() // 严格模式
.alias("h", "help") // 别名
.alias("v", "version") // 别名
.recommendCommands() // 提示
.wrap(cli.terminalWidth()) //设置宽度
.epilogue(dedent`hello szqy-cli`) // 想要说的话
.fail((err, msg) => {
console.log(err);
})
.option("ci", {
type: "boolean",
hidden: true,
}).command( // szqy-cli init --name web init 命令配置
"init [name]",
"Do init projecy",
(yargs) => {
yargs.option("name", {
type: "string",
describe: "project init",
alias: "n",
});
},
(argv) => {
console.log(argv);
}
)
- 连接服务器
使用到ssh2
const { Client } = require("ssh2");
sshClient
.on("ready", () => {
// // 执行自定义指令
resolve("登录服务器成功");
})
.connect({
"host": "192.168.110.60",
"port": 22,
"username": "root",
"password": "123456",
"devAddress": "/home/test/"
});
脚手架实现的功能
- 初始化项目
执行szqy-cli init --name,name的参数有web 和 java。 初始化最外层生成szqy.json文件,并将json文件添加至.gitignore当中
szqy-cli init --name web
生成json文件解析:buildCommand 运行打包指令,buildFileName 打包后的文件夹名称 model 类型包含(web || java) configServer 服务器配置文件 devAddress 服务器部署地址
{
"buildCommand": "npm run build",
"buildFileName": "dist",
"model": "web",
"configServer": {
"host": "8.8.8.8
"port": 22,
"username": "root",
"password": "123456",
"devAddress": "/usr/share/"
},
"note": "host (服务器IP地址,禁止填写外网ip),port (服务器端口),devAddress(服务器包地址)"
}
- 项目打包 分为俩种模式正常部署模式和发布模式
打包时根据不同model, 指定不同任务队列,java环境下则需在pom下查找名称,并将服务器上指定java包停止、重启。
正常部署:本地打包➡ 本地生成压缩包➡ 登录服务器➡ 上传压缩包➡ 解压压缩包➡ 重新启动➡ 完成。
发布模式:本地打包➡ 本地生成压缩包➡ 登录服务器➡ 上传压缩包➡ 解压压缩包➡ 重新启动➡ 生成git版本标签➡完成(发布模式下需选择发布版本号)。
发布模式下还将会修改web下的package.json当中的version,java则是修改pom下的version
3. 项目快速开始
目前只增加模版项目和vue的