脚手架插件
- 使用 yargs执行指令交互
js代码解读复制代码 const yargs = require("yargs/yargs"); const cli = yargs(); cli .usage("ben-cli-test [command] ") // 输出类型 .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
js代码解读复制代码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当中
js代码解读复制代码 szqy-cli init --name web
生成json文件解析:buildCommand 运行打包指令,buildFileName 打包后的文件夹名称 model 类型包含(web || java) configServer 服务器配置文件 devAddress 服务器部署地址
js代码解读复制代码{ "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的