node-ssh 自动部署

155 阅读1分钟

安装node-ssh

    yarn add node-ssh --dev

package.json

    "scripts": {
      "serve": "vue-cli-service serve",
      "alpha": "vue-cli-service build --mode alpha",
      "beta": "vue-cli-service build --mode beta",
      "build": "vue-cli-service build",
      "lint": "vue-cli-service lint",
      "alphaDeploy": "vue-cli-service build --mode alpha&&node ./deploy.js"
  },

deploy.js

const path = require("path");

const { NodeSSH } = require("node-ssh");
const ssh = new NodeSSH();
const configs = {
  host: "***.***.***.***",
  username: "****",
  password: "***************",
  port: **,
  serverPath: "/***/*****/****/************",
  distPath: path.resolve(__dirname, "dist/************"),
};
//上传到服务器
(function () {
  console.log("开始上传");
  ssh
    .connect({
      //configs存放的是连接远程机器的信息
      host: configs.host,
      username: configs.username,
      password: configs.password,
      port: configs.port, //ssh连接默认在22端口
    })
    .then(function () {
      console.log("ssh连接成功:", configs.host);
      console.log("上传中...");
      //上传网站的发布包至configs中配置的远程服务器的指定地址
      ssh
        .putDirectory(configs.distPath, configs.serverPath)
        .then(function () {
          console.log("上传成功");
          process.exit(0);
        })
        .catch((err) => {
          console.log("上传出错:", err);
          process.exit(0);
        });
    })
    .catch((err) => {
      console.log("ssh连接失败:", err);
      process.exit(0);
    });
})()