zoukankan      html  css  js  c++  java
  • 基于node.js实现前端web项目自动化部署

    前言

    前端项目部署时,nginx配置完成后,只需将打包后的文件上传至服务器指定目录下便可。 前端

    通常使用如下方式完成:node

    • xshell 等命令行工具上传
    • ftp/sftp 等可视化工具上传
    • jenkins 等自动化部署服务 对于简单前端项目,频繁部署时,xshell、ftp两种方式较为繁琐,而jenkins 等自动化部署服务须要提早安装软件、并熟悉配置流程。 所以但愿借助本地 node 服务实现对前端打包后文件的上传工做,既不须要服务器额外安装程序,还能够帮助咱们实现快速上传部署,更能帮助咱们深刻了解 node 。

    目的

    减小web项目在开发调试过程当中频繁编译打包后再使用ftp工具部署至服务器的手动过程,提升工做效率。nginx

    1.导入依赖模块

    1. npm install inquirer ssh2-sftp-client
    2. touch ssh.js helper.js
    3. 在package.json增长一个脚本,完成以后必定要 npm i 从新安装依赖,确保新加入的脚本生效!
    "scripts": {
    	"test": "echo \"Error: no test specified\" && exit 1",
    	"deploy": "bash deploy.sh"
    },
    

      

     
    1. touch deploy.sh
    npm run build
    echo "打包完成"
    node ./ssh.js
    
    cd -
    

     

    2. 链接远端服务器并上传操做

    const Client = require('ssh2-sftp-client')
    const sftp = new Client()
    const helper = require ('./helper')
    const config = [
      {
        name: 'a',  // 项目/服务器名称
        ssh: {
          host: '192.168.0.105',
          port: 22,
          username: 'root',
          password: 'root',
        },
        romotePath: '/var/www/dist',// 远程地址
        localPath:'./dist',// 本地地址
      },
      {
        name: 'b',
        ssh: {
          host: '192.168.0.110',
          port: 22,
          username: 'root',
          password: 'root',
        },
        romotePath: '/var/www/dist',
        localPath:'./dist',
      }
    ]
    
    async function main() {
      const SELECT_CONFIG = (await helper(config)).value // 所选部署项目的配置信息
      console.log('您选择了部署 ' + SELECT_CONFIG.name)
      sftp
        .connect(SELECT_CONFIG.ssh)
        .then(() => {
          console.log('- 链接成功,上传中..')
          return sftp.uploadDir(SELECT_CONFIG.localPath, SELECT_CONFIG.romotePath)
        })
        .then(data => {
          console.log(data,' 上传完成,及时清除缓存' )
        })
        .catch(err => {
          console.log(err,' 出错了!快看看怎么回事! ')
        })
        .finally(() => {
          sftp.end()// 断开链接
        })
    }
    
    main()
    

    3.构建和发布

    • 执行 npm run deploy 就能够打包并主动上传到你的目标服务器
    • windows系统 Git Bash Use arrow keys没法选择
    winpty npm.cmd run deploy
    

      

  • 相关阅读:
    Win32编程day11 学习笔记
    Win32编程day06 学习笔记
    Win32编程day15 学习笔记
    Win32编程day12 学习笔记
    Win32编程day09 学习笔记
    Win32编程day07 学习笔记
    Win32编程day10 学习笔记
    生命周期
    组件中的data为什么不是一个对象而是一个函数?
    asp.net Request.ServerVariables 各参数说明集合
  • 原文地址:https://www.cnblogs.com/ygunoil/p/15767758.html
Copyright © 2011-2022 走看看