基于node一键发布到服务器的js脚本

基于node一键将打包后的前端文件发布到服务器指定目录的js脚本

需要使用node的2个包

npm install ssh2 scp2

基于node进行ssh连接的控件

下面直接贴代码,已经在代码中加了注释

const { exec } = require('child_process');
const { Client } = require('ssh2');
const scpClient = require('scp2');
const path = require('path');const conn = new Client();const serverConfig = {host: '192.168.3.68',port: 22,username: 'root',password: 'Fdkj@111' // 或者使用 privateKey: require('fs').readFileSync('/path/to/your/private/key')
};const localDistPath =  path.resolve(__dirname, 'dist'); // 本地dist文件夹路径
const remotePath = '/home/dockerdata/nginx/www/ytkzweb'; // 远程服务器的目标文件夹路径// 打包命令
const buildCommand = 'npm run build'; console.log('开始打包...');exec(buildCommand, (err, stdout, stderr) => {if (err) {console.error(`Build failed: ${err.message}`);console.error(stderr);return;}conn.on('ready', () => {console.log('服务器连接成功!');// 清空目标文件夹conn.exec(`rm -rf ${remotePath}/*`, (err, stream) => {if (err) {console.error('Error executing command:', err);throw err;}stream.on('close', (code, signal) => {if (code !== 0) {console.error(`Failed to clear remote directory. Code: ${code}, Signal: ${signal}`);conn.end();return;}console.log('清除远程目录成功!');console.log('开始传输文件...');// 传输文件scpClient.scp(localDistPath, {host: serverConfig.host,username: serverConfig.username,password: serverConfig.password,path: remotePath}, (err) => {if (err) {console.error('Error:', err);} else {console.log('文件传输成功!');}conn.end();});}).stderr.on('data', (data) => {console.error('STDERR:', data.toString());});// 必须要加,否则stream流的close方法不走stream.on('data', (data) => {console.log('STDOUT:', data.toString());});});}).on('error', (err) => {console.error('SSH Connection Error:', err);}).connect(serverConfig);
});

注意 注意 注意

stream.on('data', (data) => {console.log('STDOUT:', data.toString());
});

这块代码,一定要加

以上

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/885864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode面试经典150题|228.汇总区间

给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中的每个区间范围 [a,b] 应该按…

excel-VLOOKUP函数使用/XVLOOKUP使用

多个窗口同时编辑表格,方便对照操作 使用开始-视图-新建窗口 将战区信息表的三列数据匹配到成交数据表上 可以使用VLOOKUP函数 有4个参数(必须要查找的值, 要查找的区域,要返回区域的第几列数据,一个可选参数查找匹…

boost::intrusive_ptr为什么叫做倾入指针

boost::intrusive_ptr的命名来源于其工作原理和设计目的。这个智能指针被称为“倾入指针”(intrusive)是因为它依赖于对象本身提供的功能来管理引用计数,而不是像std::shared_ptr和std::weak_ptr那样在指针内部自动管理引用计数。 具体来说&…

kafka和Flume的整合

目录 一、Kafka作为Source 【数据进入到kafka中,抽取出来】 1、在我的flume的conf文件夹下,有个myconf文件夹: 2、 创建一个flume脚本文件: kafka-memory-logger.conf 3、测试 二、kafka作为Sink 【数据从别的地方抽取到kafka里…

PCL 点云分割 欧式聚类算法分割

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1欧式聚类分割 2.1.2分割后的可视化 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总(长期更新) 一、概述 本文介…

【运维】如何在不同操作系统上获取计算机硬件信息

目录 引言一、Windows 操作系统1.1 获取 CPU 信息1.2 获取内存信息1.3 获取硬盘信息1.4 获取显卡信息1.5 获取显存信息 二、macOS 操作系统2.1 获取 CPU 信息2.2 获取内存信息2.3 获取硬盘信息2.4 获取显卡信息2.5 获取显存信息 三、Linux 操作系统3.1 获取 CPU 信息3.2 获取内…

Ascend Extension for PyTorch的源码解析

1 源码下载 Ascend对pytorch代码的适配,可从以下链接中获取。 Ascend/pytorch 执行如下命令即可。 git clone https://gitee.com/ascend/pytorch.git2 目录结构解析 源码下载后,如果需要编译torch-npu,最好保持pytorch的源码版本匹配&…

鸿蒙next版开发:ArkTS组件快捷键事件详解

在HarmonyOS 5.0中,ArkTS提供了一种机制,允许开发者为应用中的组件绑定快捷键事件,这极大地增强了应用的交互性和用户体验。本文将详细解读如何在ArkTS中使用组件快捷键事件,并提供示例代码进行说明。 组件快捷键事件基础 组件快…

微服务学习重点:底层的实现逻辑

引言 微服务架构作为现代软件开发中的一种重要趋势,通过将大型应用拆分为一系列小型、独立的服务,实现了更高的灵活性、可扩展性和可维护性。然而,要深入理解并掌握微服务技术,不仅需要了解其基本概念和架构,还需要深…

Excel(图例)中使用上标下标

单元格中 1、在Excel单元格中刷黑要设置成上标的字符,如m2中的2; 2、单击右键,在弹出的对话框中选择“设置单元格格式”; 3、在弹出的“设置单元格格式”对话框中选择上标(或下标); 4、最后…

Jmeter基础篇(22)服务器性能监测工具Nmon的使用

一、前言 我们在日常做压测的过程中,不仅仅需要监控TPS,响应时间,报错率等这些系统基础性能数据,还需要对服务器的性能(如CPU、磁盘、内存、网络IO等)做监控,以求对系统运行过程中的硬件性能有…

【c++笔试强训】(第六篇)

目录 单词搜索(搜索) 题目解析 讲解算法原理 编写代码 杨辉三⻆(动态规划) 题目解析 讲解算法原理 编写代码 单词搜索(搜索) 题目解析 1.题目链接:单词搜索_牛客题霸_牛客网 2.题目描…

【含开题报告+文档+PPT+源码】基于SpringBoot的奶茶点单系统

开题报告 随着社会经济的发展和人们对生活质量的需求提升,奶茶行业迅速崛起,并成为人们生活不可或缺的一部分。消费者在奶茶店点单通常需要排队等候、填写纸质订单,给消费者和奶茶店带来了一定的不便。因此,设计和实现一个基于 S…

【Android、IOS、Flutter、鸿蒙、ReactNative 】约束布局

Android XML 约束布局 参考 TextView居中 TextView 垂直居中并且靠右 TextView 宽高设置百分比 宽和高的比例 app:layout_constraintDimensionRatio"h,2:1" 表示子视图的宽高比为2:1,其中 h表示保持宽度不变,高度自动调整。 最大宽度 设…

Android 下内联汇编,Android Studio 汇编开发

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 内联汇编 Android 内联汇编非常适用于 ARM 架构的性能优化和底层操作,通常用于加密、解密、特定指令优化等领域。 1. 基础语法 内联汇编在 C/C …

Spring Spring Boot 常用注解总结

在 Java 开发中,Spring 和 Spring Boot 框架广泛应用于企业级应用开发。这两个框架提供了丰富的注解,使得开发更加高效和便捷。本文将对 Spring 和 Spring Boot 中常用的注解进行总结。 一、Spring 常用注解 1. Component 作用:用于将普通的…

安装宝塔 Windows 面板

操作场景 宝塔面板是一款使用很方便、功能强大、交互友好且终身免费的服务器管理软件,支持 Linux 与 Windows 系统。在宝塔面板中,您可以一键配置 LAMP、LNMP、网站、数据库、FTP、SSL,还可以通过 Web 端轻松管理服务器。 本文介绍如何在 W…

Ubuntu 的 ROS 操作系统 turtlebot3 gazebo仿真

引言 TurtleBot3 Gazebo仿真环境是一个非常强大的工具,能够帮助开发者在虚拟环境中测试和验证机器人算法。 Gazebo是一个开源的3D机器人仿真平台,它能支持物理引擎,允许机器人在虚拟环境中模拟和测试。结合ROS,它能提供一个完整的…

计算器上的MC、MR、M+、M—、CE是什么意思?

在计算器中, MC键叫做memory clear,中文 清除存储,是一个清除寄存器中存储数字的指令。 MS键叫做memory save,中文 存入存储。 而MR键,则是一个读取原先存储在寄存器中的数字的指令。 M键指将当前数值存入寄存器以…

MacOs上如何彻底卸载DevEco Studio?

在Mac上彻底卸载DevEco Studio,你可以执行以下步骤: 打开Finder。 按下Command Shift G,输入~/Library/Application Support/,然后按Enter。 删除Huawei文件夹。 打开终端应用程序。 执行以下命令来删除DevEco Studio的相关…