前端自动同步代码到服务器的工具,方便快捷

404 阅读2分钟

先说说为什么做这个工具

以前项目改个bug,打包代码,然后压缩传给后端,后端更新到服务器。

后来改的很频繁,后端直接把服务器的登录信息给你,文件目录给你,然后你下载个ftp的工具,自己传到服务器,具体做法是打包,压缩,传到服务器,服务器解压,剪切到目标目录。

步骤虽然不多,但是对于非常懒的我来说真是太恶心了,我是连复制粘贴都觉得麻烦的人。

直到看到了ssh2这个库,然后我瞬间就萌发了做这个工具的想法,于是花了一两天时间把它写了出来。

代码在 github.com/yayaluoya/s…

一个名叫server-file-sync的工具

使用方法

先安装

npm i server-file-sync -g
  • 在项目目录下执行 sfs -i 生成配置文件,然后按照里面的选项配置
  • 然后就能执行 sfs 同步文件了
  • 建议把命令写到package.json文件中,就像这样
  • 捕获.PNG
  • 然后点一下就能上传了
  • 捕获fasd.PNG

配置文件格式

/**
 * 配置文件类型
 */
import { type Matcher } from 'anymatch';
import { Client, SFTPWrapper, ConnectConfig } from "ssh2";
/**
 * 配置文件类型
 */
interface IConfig {
    /** 配置名字 */
    name: string;
    /** 主机地址 */
    host?: string,
    /** 端口号 */
    port?: number,
    /** 用户名 */
    username?: string,
    /** 私钥密码 */
    passphrase?: string;
    /** 私钥字符串 */
    privateKey?: string;
    /** 同步列表 */
    syncList: {
        /** key */
        key: string;
        /** 标题 */
        title: string;
        /** 路径列表 */
        paths: {
            /** 本地地址 */
            local: string;
            /** 远程地址 */
            remote: string;
            /** 文件忽略,请注意不支持 Windows 样式的反斜杠作为分隔符,具体使用方法见anymatch的官方文档*/
            ignored?: Matcher;
        }[],
    }[];
    /** ssh2的连接配置,更多配置见ssh2的官网文档 */
    connectConfig?: ConnectConfig,
    /** 是否监听,如果为true的话就能实时监听文件变化并同步到服务器,就相当于直接在服务器上改文件一样,非常方便,但是只是传个包的话不建议打开 */
    watch: boolean;
    /** 更新回调,可以在这个回调里面执行其他命令,比如pm2 update xxx */
    updateF?: (op: {
        connF: () => Promise<Client>;
        sftp: SFTPWrapper;
    }, key: string) => Promise<any>;
}