使用node命令自动部署服务
436 字
2 分钟
使用node命令自动部署服务
自从有了服务器之后,以前用vitepress写的博客,每次修改之后,既要部署在github上,又想要部署在自己的服务器上。
github pages部署
github的部署已经有deploy脚本,可以输入yarn deploy命令直接部署。
服务器部署
想从本地部署服务器,需要几个步骤:
-
连接服务器 使用ssh2-sftp-client
config.js const config = {host: '43.140.252.63', // 服务器地址remoteStatic: '/usr/local/tomcat/webapps/ROOT/dist.tar.gz', // 需要上传到服务器的目录port: "22", // 端口username: "root", // rootpassword: "", // 密码 执行脚本时传入 node xxx/upload.js passwordlocalStatic: path.join(__dirname, '../../.vitepress/dist.tar.gz'), // tar.gz存在的目录};// index.jsconst Client = require("ssh2-sftp-client");const config = require("./config");sftp.connect(config).then(() => {console.log(success("sftp连接成功"));...}) -
上传打包后的文件
-
首先判断dist目录是否存在
-
如果存在,压缩后再传入(dist文件太多,传输太慢)
if (fs.existsSync(options.localStatic)) {console.log(success("开始上传压缩文件"));return sftp.put(options.localStatic, options.remoteStatic);} else if (fs.existsSync(baseDir)) {isDist = true;console.log(success("压缩文件不存在,开始上传dist目录"));return sftp.uploadDir(baseDir, options.remoteStatic.slice(0, -12));} -
上传完成,使用ssh2进行远程命令解压
...const { Client } = require("ssh2");const conn = new Client();conn.on("ready", () => {// 远程解压const remoteModule = options.remoteStatic.replace("dist.tar.gz","");/*** 执行命令* cd /usr/local/tomcat/webapps/ROOT* tar xvf dist.tar.gz*/conn.exec(`cd ${remoteModule};tar xvf dist.tar.gz`,(err, stream) => {if (err) throw err;stream.on("close", (code) => {code === 0? console.log(success("解压完成")): console.log(error("解压失败"));})...})...})
-
-
将命令添加在scripts中
{"scripts": {"zip": "cd .vitepress/dist && tar -zcvf ../dist.tar.gz *","build:server": "cross-env APP_ENVKEY=server vitepress build && npm run zip","deploy:server": "npm run build:server && node scripts/upload",},} -
输入命令
npm run deploy:server password,password为服务器密码
通过以上几个步骤,就可以把前端服务直接通过命令行的方式部署在服务器上
代码地址
使用node命令自动部署服务
https://wangxiang.website/posts/前端工程/deploy-server/