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

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

一、安装依赖

npm install cross-env scp2 ssh2 -D

或者

yarn add cross-env scp2 ssh2 -D

二、在项目根目录新建 deploy 文件夹在文件夹里席间含 index.js 和 products.js 文件

// deploy/index.js里面

const scpClient = require("scp2");

const ora = require("ora");

const chalk = require("chalk");

const server = require("./products");

const spinner = ora(

"正在发布到" +

(process.env.NODE_ENV === "prod" ? "生产" : "测试") +

"服务器..."

);

var Client = require("ssh2").Client;

var conn = new Client();

conn

.on("ready", function () {

// rm 删除服务器已存在文件夹

conn.exec("rm -rf 服务器文件夹", function (err, stream) {

if (err) throw err;

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,

// 使用本地的私钥或者password登录服务器

// password: server.password,

// privateKey: require('fs').readFileSync('/Users/ngto/.ssh/id_rsa')

},

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"

)

);

}

}

);

conn.end();

})

.on("data", function (data) {

console.log("STDOUT: " + data);

})

.stderr.on("data", function (data) {

console.log("STDERR: " + data);

});

});

})

.connect({

host: server.host,

port: server.port,

username: server.username,

// 使用本地的私钥或者password登录服务器

// password: server.password,

// privateKey: require('fs').readFileSync('/Users/ngto/.ssh/id_rsa')

});

// deploy/products.js

/*

*读取env变量判断发布环境

*/

const SERVER_ID = process.env.NODE_ENV === 'prod' ? 1 : 0;// 1:正式、0:测试

/*

*定义多个服务器账号 及 根据 SERVER_ID 导出当前环境服务器账号

*/

const SERVER_LIST = [

{

id: 0,

name: '',//项目名称

domain: '',// 域名

host: '',// ip

port: '',// 端口

username: 'root', // 登录服务器的账号

password: '',// 登录服务器的密码

path: ''// 发布至静态服务器的项目路径

},

{

id: 1,

name: '',//项目名称

domain: '',// 域名

host: '',// ip

port: ,// 端口

username: '', // 登录服务器的账号

password: '',// 登录服务器的密码

path: ''// 发布至静态服务器的项目路径

}

];

module.exports = SERVER_LIST[SERVER_ID];

三、在package.json中的scripts标签下加入以下标签

"deploy:dev": "npm run build && cross-env NODE_ENV=dev node ./deploy",

"deploy:prod": "npm run build && cross-env NODE_ENV=prod node ./deploy"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值