vue本地打包并将构建文件推送到服务器对应目录下

第一步安装依赖

bash 复制代码
pnpm install node-ssh

第二步创建名为deploy.mjs文件

javascript 复制代码
import path from 'node:path'
import { fileURLToPath } from 'node:url'
import { NodeSSH } from 'node-ssh'

const ssh = new NodeSSH()

async function deploy() {
  console.log('打包成功进行部署流程')
  try {
    // 连接到远程服务器
    await ssh.connect({
      host: 'xx.xx.xx.xx',
      username: 'xxx',
      password: 'xxx',
    })

    console.log('服务器连接成功')

    // 获取当前文件的目录路径
    const __dirname = path.dirname(fileURLToPath(import.meta.url))
    const localPath = path.join(__dirname, 'dist') // 本地目录
    const remotePath = '/www/wwwroot/xxxx' // 远程目录

    // 确保 localPath 存在
    console.log(`本地文件路径: ${localPath}`)

    // 上传文件
    await ssh.putDirectory(localPath, remotePath, {
      recursive: true,
      concurrency: 10,
      validate: (itemPath) => {
        // 只上传文件
        return itemPath !== localPath
      },
    })

    console.log('部署成功')
  }
  catch (error) {
    console.error('Error:', error)
  }
  finally {
    // 断开连接
    ssh.dispose()
  }
}

deploy()

第三步在package.json中scripts里添加(实际用npm、pnpm、yarn都可以自己更换)

javascript 复制代码
 "deploy": "pnpm run build && node deploy.mjs"
相关推荐
学嵌入式的小杨同学6 小时前
从零打造 Linux 终端 MP3 播放器!用 C 语言实现音乐自由
linux·c语言·开发语言·前端·vscode·ci/cd·vim
weixin_425543736 小时前
TRAE CN3.3.25 构建的Electron简易DEMO应用
前端·typescript·electron·vite·nestjs
郝亚军7 小时前
如何在Ubuntu和win10/11之间通过samba访问对方的文件
linux·服务器·ubuntu
Mr Xu_7 小时前
【Vue3 + ECharts 实战】正确使用 showLoading、resize 与 dispose 避免内存泄漏
前端·信息可视化·vue·echarts
0思必得07 小时前
[Web自动化] Selenium设置相关执行文件路径
前端·爬虫·python·selenium·自动化
雯0609~7 小时前
hiprint:实现项目部署与打印1-官网提供普通html版本
前端·html
不绝1918 小时前
UGUI——进阶篇
前端
~牧马~8 小时前
【记录63】electron打包vue项目之踩坑
vue.js·electron·electron与node兼容
Exquisite.8 小时前
企业高性能web服务器(4)
运维·服务器·前端·网络·mysql
2501_944525549 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 账户详情页面
android·java·开发语言·前端·javascript·flutter