NodeJS前端自动化部署实现实例详解

 更新时间:2023年10月26日 14:09:59   作者:碰磕  
这篇文章主要为大家介绍了NodeJS前端自动化部署实现实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

手动部署

所需工具

xshell:连接服务器工具

xftp:图形化界面传输文件工具(可有可无,减少命令实现部分工作

打包并部署

  • 打包

npm run build

一般是上方这个项目打包命令,具体看项目配置

  • 部署

采用xshell配合xftp手动copy文件覆盖 

- 使用xshell连接云服务器,

- 再使用nginx指向打包文件的地址路径,然后将打包好的文件放在指定路径

 自动部署

天天重复上边的工作无非觉得浪费时间了,乍一看nodejs好像可以帮我们实现连接服务器并且上传文件等,可以省去这部分繁琐工作,让我们开始吧!~

安装依赖

"inquirer": "^8.2.0",

"ssh2-sftp-client": "^9.0.4"

Inquirer 是常规交互式命令行用户接口的集合,提供给 Node.js 一个方便嵌入,漂亮的命令行接口,用于命令行提示交互

ssh2-sftp-client为 node.js 基于 ssh2 封装的, SFTP客户端,用于连接操作服务器

代码编写

在项目根目录下创建文件夹deploy方便管理

编写命令行交互文件helper.js

const inquirer = require('inquirer')
new inquirer.Separator()
const selectTip = 'project name:'
const options = [
  {
    type: 'checkbox',
    name: selectTip,
    message: `您希望把项目部署到哪个环境?`,
    choices: []
  }
]
// 显示选择提示窗
function showHelper (config) {
  console.log("config=",config)
  return new Promise((resolve, reject) => {
    initHelper(config) // 初始化helper
    inquirer.prompt(options).then(answers => {
      console.log(answers,answers[selectTip],selectTip)
      resolve({ value: findInfoByName(config,["测试环境"]) }) // 查找所选配置项
    }).catch((err) => {
      reject(console.error(' helper显示或选择出错!', err))
    })
  })
}
// 初始化helper
function initHelper (config) {
  for (let item of config) {
    options[0].choices.push(item.name)
  }
  console.log('正在检查全局配置信息...')
  // 检查是否存在相同name
  if (new Set(options[0].choices).size !== options[0].choices.length) {
    console.error('请检查配置信息,存在相同name!')
    process.exit()
  }
}
// 查找符合条件的配置项
function findInfoByName (config, nameArr) {
  console.log("自定义配置",config,"选中的环境",nameArr)
  const arrInfo = []
  for (let item of config) {
    for(let name of nameArr) {
      console.log(name,item)
      if(item.name === name) {
        arrInfo.push(item)
      }
    }
  }
  return arrInfo
}
module.exports = showHelper

编写操作服务器进行上传发布文件ssh.js

const Client = require('ssh2-sftp-client')
const helper = require ('./helper')
const config = [
  {
    name: '测试环境',
    enviroment: 'development',
    ssh: {
      host: '你的服务器地址',
      port: 22,//端口号
      username: '服务器用户名',
      password: '服务器密码',
    },
    romotePath: '/lvdu/appHtml',// 远程地址
    localPath:'../dist',// 本地地址
  }
]
function connect(config) {
  const sftp = new Client()
  return sftp
    .connect(config.ssh)
    .then(() => {
      console.log(`正在部署 ${config.name}`)
      return sftp.uploadDir(config.localPath, config.romotePath)
    }).finally(() => {
      sftp.end()
    })
}
async function main() {
  const ps = []
  const table = []
  const SELECT_CONFIG = (await helper(config)).value // 所选部署项目的配置信息
  console.log(SELECT_CONFIG)
  for(let config of SELECT_CONFIG) {
    table.push({
      enviroment: config.enviroment,
      status: 'OK'
    })
    ps.push(() => connect(config))
  }
  const p = Promise.resolve()
  ps.reduce((p, c) => {
    return p.then(c)
  }, p).then(() => {
    console.log('success completed')
    console.table(table);
  }).catch((err) => {
    console.log(err,'出了点问题,快去看看吧~~')
  })
}

main()

最后可编写脚本文件deploy.sh用于执行上方文件,也可手动执行

echo "正在打包 "

npm run build

node ./ssh.js

如果手动执行就需要先

npm run build

再 node ssh.js

该方式只适用于本地个人使用,切勿上传仓库,防止服务器账号密码泄露

以上就是NodeJS前端自动化部署实现实例详解的详细内容,更多关于NodeJS前端自动化部署的资料请关注脚本之家其它相关文章!

相关文章

  • node.js中debug模块的简单介绍与使用

    node.js中debug模块的简单介绍与使用

    这篇文章主要介绍了node.js中debug模块的相关资料,文中通过图文介绍的非常详细,相信会对大家具有一定的参考学习价值,需要的朋友们下面来跟着小编来一起看看吧。
    2017-04-04
  • 在Node.js中处理CORS问题的解决方案

    在Node.js中处理CORS问题的解决方案

    当今的网络应用程序越来越多地涉及跨域资源共享(CORS)问题,这是因为现代浏览器实施了安全策略,限制了跨源HTTP请求,什么是CORS?如何在Node.js中处理CORS问题,需要的朋友可以参考下
    2024-07-07
  • 前端必会的轻量打包工具gulp使用详解

    前端必会的轻量打包工具gulp使用详解

    这篇文章主要为大家介绍了前端必会的轻量打包工具gulp使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Node.js中require的工作原理浅析

    Node.js中require的工作原理浅析

    这篇文章主要介绍了Node.js中require的工作原理浅析,通过分析node.js的源码得到本文,需要的朋友可以参考下
    2014-06-06
  • 带你了解NodeJS事件循环

    带你了解NodeJS事件循环

    这篇文章主要介绍NodeJS事件循环,Node中代码从上到下同步执行,在执行过程中会将不同的任务添加到相应的队列中,那具体有的循环又是怎么回事呢,限免现编就带大家学习该详细内容,需要的朋友也可以参考一下
    2022-02-02
  • 基于Node.js的强大爬虫 能直接发布抓取的文章哦

    基于Node.js的强大爬虫 能直接发布抓取的文章哦

    基于Node.js的强大爬虫能直接发布抓取的文章哦!本爬虫源码基于WTFPL协议,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • npm dose not support Node.js v10.15.3的解决方法

    npm dose not support Node.js v10.15

    这篇文章主要给大家介绍了关npm dose not support Node.js v10.15.3的解决方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-11-11
  • node.js利用socket.io实现多人在线匹配联机五子棋

    node.js利用socket.io实现多人在线匹配联机五子棋

    这篇文章主要介绍了node.js利用socket.io实现多人在线匹配联机五子棋的操作方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-05-05
  • nodejs和php实现图片访问实时处理

    nodejs和php实现图片访问实时处理

    这篇文章主要为大家详细介绍了nodejs和php分别实现图片访问实时处理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • 从零学习node.js之express入门(六)

    从零学习node.js之express入门(六)

    相信大家都知道Express是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。下面这篇文章主要介绍了node.js中express的入门知识,需要的朋友可以参考下。
    2017-02-02

最新评论