当前位置: 首页 > 后端技术 > Node.js

前端项目自动部署到服务器

时间:2023-04-03 13:54:59 Node.js

前端项目自动部署到服务器1.安装依赖npminstallcross-envscp2ssh2-D或yarnaddcross-envscp2ssh2-D2.在项目根目录新建deploy文件夹,包含index.js和products.js文件//deploy/index.jsinsideconstscpClient=require("scp2");constora=require("ora");constchalk=require("chalk");constserver=require(“。/产品”);constspinner=ora("Publishingto"+(process.env.NODE_ENV==="prod"?"production":"test")+"server...");varClient=require("ssh2").Client;varconn=newClient();conn.on("ready",function(){//rm删除服务器上已有的文件夹conn.exec("rm-rfserverfolder",function(err,stream){if(err)throwerr;stream.on("close",function(code,signal){//执行shell命令后,将开始上传部署项目的代码放在这里spinner.start();//dist本地编译文件夹scpClient.scp("dist/",{host:server.host,port:server.port,username:server.username,path:server.path,//使用本地私钥或密码登录服务器//密码:server.password,//privateKey:require('fs').readFileSync('/Users/ngto/.ssh/id_rsa')},function(err){spinner.stop();if(err){console.log(chalk.red("发布失败。\n"));抛出错误;}else{console.log(chalk.green("成功!成功发布到"+(process.env.NODE_ENV==="prod"?"production":"test")+"server!\n"));}});conn.end();}).on("data",function(data){console.log("STDOUT:"+data);}).stderr.on("data",function(data){console.log("STDERR:"+数据);});});}).connect({host:server.host,port:server.port,username:server.username,//使用本地私钥或密码登录服务器//password:server.password,//privateKey:require('fs').readFileSync('/Users/ngto/.ssh/id_rsa')});//deploy/products.js/**读取env变量判断发布环境*/constSERVER_ID=process.env.NODE_ENV==='prod'?1:0;//1:Official,0:Test/**定义多个服务器账号,根据SERVER_ID导出当前环境服务器账号*/constSERVER_LIST=[{id:0,name:'',//项目名domain:'',//域名host:'',//ipport:'',//端口username:'root',//登录服务器账号password:'',//登录服务器的密码path:''//发布到静态服务器的项目路径},{id:1,name:'',//项目名domain:'',//域名host:'',//ipport:,//端口用户名:'',//登录服务器帐号密码:'',//登录服务器密码路径:''//发布到静态服务器的项目路径}];module.exports=SERVER_LIST[SERVER_ID];3.在package.json的scripts标签下添加如下标签“deploy:dev”:“npmrunbuild&&cross-envNODE_ENV=devnode./deploy”,“deploy:prod”:“npmrunbuild&&cross-envNODE_ENV=prod节点./deploy"