先说说为什么做这个工具
以前项目改个bug,打包代码,然后压缩传给后端,后端更新到服务器。
后来改的很频繁,后端直接把服务器的登录信息给你,文件目录给你,然后你下载个ftp的工具,自己传到服务器,具体做法是打包,压缩,传到服务器,服务器解压,剪切到目标目录。
步骤虽然不多,但是对于非常懒的我来说真是太恶心了,我是连复制粘贴都觉得麻烦的人。
直到看到了ssh2这个库,然后我瞬间就萌发了做这个工具的想法,于是花了一两天时间把它写了出来。
一个名叫server-file-sync的工具
使用方法
先安装
npm i server-file-sync -g
- 在项目目录下执行 sfs -i 生成配置文件,然后按照里面的选项配置
- 然后就能执行 sfs 同步文件了
- 建议把命令写到package.json文件中,就像这样
- 然后点一下就能上传了
配置文件格式
/**
* 配置文件类型
*/
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>;
}