前端项目自动部署到服务器
一、安装依赖
npm install cross-env scp2 ssh2 -D
或者
yarn add cross-env scp2 ssh2 -D
二、在项目根目录新建 deploy 文件夹在文件夹里席间含 index.js 和 products.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 () {
conn.exec("rm -rf 服务器文件夹", function (err, stream) {
if (err) throw err;
stream
.on("close", function (code, signal) {
spinner.start();
scpClient.scp(
"dist/",
{
host: server.host,
port: server.port,
username: server.username,
path: server.path,
},
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,
});
const SERVER_ID = process.env.NODE_ENV === 'prod' ? 1 : 0;
const SERVER_LIST = [
{
id: 0,
name: '',
domain: '',
host: '',
port: '',
username: 'root',
password: '',
path: ''
},
{
id: 1,
name: '',
domain: '',
host: '',
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"