nodejs制作一个文档同步工具自动同步到gitee中的实现代码

初衷

之所以要做这个工具是为了让自己可以随时用电脑时能记录日常工作或生活。一般只需要简单记录下就行了。这样我在家里的和公司里的记录都能同步看到。

这样后期整理的时候看到几个关键词就能想起来具体的事情,有的也可以为日后整理成文章做一个草稿,这样写文章才能有头有尾,否则想到什么说什么是非常不利于写出文章的。

一开始我使用手动同步的方式,但是发现很麻烦,之后就直接用了个批处理文件来一次性同步。

git pull

git add .

git commit -m '同步'

git push

git status

@echo off

pause

但是这样还是有几个缺点:

1.有时候会忘记执行同步,特别是下班的时候,直接关机的。

2.如果一开始忘记同步了,后面就会产生git冲突。体验不是太好。

写程序

电脑上需要默认安装nodejs和git。

因为后来抽时间写了个小程序。只要把程序运行在后台,每过一段时间就会自动将文档同步起来。

本地改过内容会自动同步到git仓库,git仓库内容被改后,又会自动拉取最新内容同步到本地,这样就能保证远程仓库和本地最新了,两台电脑直接的内容也就同步了。

我们来看下使用nodejs如何实现:

首先我们必须要有个git仓库用来存储数据。

去gitee.com申请开个仓库就行。创建后得到远程仓库的地址,复制下来备用。

本地创建一个文件夹用于同步文档数据。

文件加中执行npm init -y 创建package.json

进行绑定远程仓库:

git init  #进行初始化仓库
git remote add origin [你的仓库地址]
git push origin
git push --set-upstream origin master  #首次同步仓库

这样之后就可以直接运行工具了。

在文件夹新增文件index.js

在文件夹中安装依赖包

yarn add child_process
yarn add iconv-lite
yarn add moment

index.js中写入代码:

const child_process = require("child_process");
const iconv = require("iconv-lite");
const moment = require("moment");

const encoding = "cp936";
const binaryEncoding = "binary";

//执行一行cmd命令
function cmd(text) {
  return new Promise((resolve, reject) => {
    child_process.exec(
      text,
      { encoding: binaryEncoding },
      (err = "", stdout = "", stderr) => {
        if (err) {
          resolve(err);
          return;
        }
        resolve(iconv.decode(Buffer.from(stdout, binaryEncoding), encoding));
      }
    );
  });
}

//cmd运行顺序
async function run() {
  const time = moment().format("YYYY-MM-DD HH:mm:ss");
  let status = await cmd("git status");
  if (
    status.includes(
      "not a git repository (or any of the parent directories): .git"
    )
  ) {
    //目录未绑定git地址
    console.log("目录未绑定git地址");
  } else {
    //已绑定git
    //拉取
    const pull = await cmd("git pull");
    if (
      !pull.includes("Already up to date") &&
      !pull.includes("Already up-to-date")
    ) {
      //拉取下来了最新数据
      console.log(`拉取了最新数据: ${time}`);
    }
    //状态
    status = await cmd("git status");
    if (status.includes('(use "git add"')) {
      //本地内容有改动 需要提交
      await cmd("git add .");
      await cmd('git commit -m "同步"');
      await cmd("git push");
      console.log(`同步成功: ${time}`);
    }
  }
}

//每30秒执行一次
setInterval(() => {
  run();
}, 1000 * 30);
run();

这样还不行,因为我们要同步的是指定目录的文件,不是当前目录的文件。所以我们要将其打包成一个exe文件,放到需要同步的文件夹中,才能同步指定目录。

首先我们全局安装一个依赖包:pkg

npm install -g pkg

然后在工具的目录中执行:

pkg -t win index.js

即可将该nodejs项目打包成独立的exe程序,然后将这个exe程序放在需要git同步的目录中。

另外,为了不把这个exe文件同步到仓库中,我们需要排除这个文件

所以要在同步的目录中放一个.gitignore文件,里面加上一行用于去除该exe文件

这个打包出来的文件:http://xiazai.jb51.net/202112/yuanma/indexdat_jb51.rar

这个配置文件:http://xiazai.jb51.net/202112/yuanma/gitignore_jb51.rar

为了能让电脑开机后能直接启动程序,我们将程序放入开机启动项

打开文件夹,然后粘贴这个路径到文件夹,回车

%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

我们将这个文件的快捷方式放入到开机启动项中,这样开机就会执行同步了,实现一直同步。每30秒都会去检查下是否是最新的。

到此这篇关于nodejs制作一个文档同步工具自动同步到gitee中 的文章就介绍到这了,更多相关nodejs文档同步工具内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • nodejs实现一个word文档解析器思路详解

    之前项目里遇到一个需求,需要前端上传一个word文档,然后后端提取出该文档的指定位置的内容并保存.这里后端用的是nodejs,开始接到这个需求,发现无从下手,主要是没有处理过word这种类型的文档,怎么解析? Excel倒是有相关的库可以用,而且很简单 思路 搜索了好一会儿,在npm上发现了一个叫做 adm-zip 的包,这个包可以解压缩word文档,原来word文档也是可以解压缩的,之前一直不知道,通过如下代码就可以将word文档解压缩,并进一步提取内容 var admZip = requir

  • nodejs npm package.json中文文档

    简介 本文档有所有package.json中必要的配置.它必须是真正的json,而不是js对象. 本文档中描述的很多行为都受npm-config(7)的影响. 默认值 npm会根据包内容设置一些默认值. 复制代码 代码如下: "scripts": {"start": "node server.js"} 如果包的根目录有server.js文件,npm会默认将start命令设置为node server.js. "scripts":

  • nodejs(officegen)+vue(axios)在客户端导出word文档的方法

    前言 我的项目中有一个需求:点击按钮生成可编辑的word文档订单详情的信息 我使用的前端框架是Vue.js.后台使用的是node.js node.js生成和导出word文档我参考的是下面这两篇文章,写的挺好的(github上的那篇里面还有node.js生成word.excel.ppt的example,需要详细的可以看里面) https://www.jb51.net/article/144769.htm https://github.com/Ziv-Barber... 问题 node.js上面这两

  • nodejs制作一个文档同步工具自动同步到gitee中的实现代码

    初衷 之所以要做这个工具是为了让自己可以随时用电脑时能记录日常工作或生活.一般只需要简单记录下就行了.这样我在家里的和公司里的记录都能同步看到. 这样后期整理的时候看到几个关键词就能想起来具体的事情,有的也可以为日后整理成文章做一个草稿,这样写文章才能有头有尾,否则想到什么说什么是非常不利于写出文章的. 一开始我使用手动同步的方式,但是发现很麻烦,之后就直接用了个批处理文件来一次性同步. git pull git add . git commit -m '同步' git push git sta

  • Python制作一个随机抽奖小工具的实现

    目录 1. 核心功能设计 2. GUI设计与实现 3. 功能实现 3.1 读取人员名单 3.2. 随机抽奖 3.3. 保存中奖名单 3.4. GUI交互逻辑 最近在工作中面向社群玩家组织了一场活动,需要进行随机抽奖,参考之前小明大佬的案例,再结合自己的需求,做了一个简单的随机抽奖小工具. 今天我就来顺便介绍一下这个小工具的制作过程吧! 先看效果: 1. 核心功能设计 针对随机抽奖的小工具,需要可以导入参与抽奖的人员名单,然后选择不同的奖励类型进行随机抽取获奖名单并导出. 那么,简单进行需求拆解,

  • swagger文档增强工具knife4j使用图文详解

    目录 基本使用 增强功能 1.添加接口作者 2.生产环境关闭文档 3.接口排序 4.导出离线文档 5.过滤请求参数 5.1 忽略表单参数 5.2 忽略json参数 6.AfterScript 7.全局参数 微服务文档聚合 1.Cloud模式 2.Nacos模式 使用原生的swagger作为接口文档,功能不够强大,并且默认的ui比较简陋,不符合大众审美.所以实际开发中推荐使用knife4j对swagger进行增强.knife4j的地址:https://gitee.com/xiaoym/knife4

  • Vue组件文档生成工具库的方法

    目录 解析.vue 文件 提取文档信息 提取组件名称.描述.props.methods.model 提取描述 提取 methods 提取 props 提取 model 提取组件Events 提取组件Slots 结语 程序员最讨厌的两件事情,第一种是写文档,另一种是别人没有写文档.有没有直接根据vue组件生成文档的呢?当然是有的的.但第三方使用起来不一定能和现有项目结合使用,往往需要额外的注释用来标记提取信息.使用第三方的一些比较常见问题 文档提取信息不全面,可能有些信息你需要提取但是它又不支持.

  • SpringBoot的API文档生成工具SpringDoc使用详解

    目录 前言 SpringDoc简介 使用 集成 从SpringFox迁移 结合SpringSecurity使用 测试 常用配置 总结 参考资料 前言 之前在SpringBoot项目中一直使用的是SpringFox提供的Swagger库,上了下官网发现已经有接近两年没出新版本了!前几天升级了SpringBoot 2.6.x 版本,发现这个库的兼容性也越来越不好了,有的常用注解属性被废弃了居然都没提供替代!无意中发现了另一款Swagger库SpringDoc,试用了一下非常不错,推荐给大家! Spr

  • Java实现多个文档合并输出到一个文档

    本文实例为大家分享了Java实现多个文档合并输出到一个文档的具体代码,供大家参考,具体内容如下 方法:Java NIO package First; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.nio.channels.FileChannel; import java.nio.channels.WritableByteChannel; publi

  • 使用Python制作一个打字训练小工具

    一.写在前面 说道程序员,你会想到什么呢?有人认为程序员象征着高薪,有人认为程序员都是死肥宅,还有人想到的则是996和 ICU. 别人眼中的程序员:飞快的敲击键盘.酷炫的切换屏幕.各种看不懂的字符代码. 然而现实中的程序员呢?对于很多程序员来说,没有百度和 Google 解决不了的问题,也没有 ctrl + c 和 ctrl + v 实现不了的功能. 那么身为一个程序员,要怎么让自己看起来更加"专业"呢?答案就是加快自己的打字速度了,敲的代码可能是错的,但这个13却是必须装的! 然而还

  • 使用Python制作一个数据预处理小工具(多种操作一键完成)

    在我们平常使用Python进行数据处理与分析时,在import完一大堆库之后,就是对数据进行预览,查看数据是否出现了缺失值.重复值等异常情况,并进行处理. 本文将结合GUI工具PySimpleGUI,来讲解如何制作一款属于自己的数据预处理小工具,让这个过程也能够自动化!最终效果如下 本文将分为三部分讲解: 制作GUI界面 数据处理讲解 打包与测试 主要涉及将涉及以下模块: PySimpleGUI pandas matplotlib 一.GUI界面制作 思路 老规矩,先讲思路再上代码,首先还是说一

  • 基于PyQT5制作一个敏感词检测工具

    设计思路:根据敏感词库文件筛选,查看输入的文本中是否包含敏感词汇.从而过滤出相关的敏感词. 导入应用相关的模块. import os import logging import sys 导入UI界面相关的模块. from PyQt5.QtWidgets import QApplication,QWidget,QVBoxLayout,QTextEdit,QGridLayout,QLineEdit,QPushButton,QFileDialog from PyQt5.QtGui import QIc

  • 基于PyQT5制作一个桌面摸鱼工具

    目录 前言 按键功能控制 主要功能 核心代码 前言 现在我能一整天都严肃地盯着屏幕,看起来就像在很认真地工作, 利用摸鱼,打开小说,可实行完美摸鱼,实时保存进度 用PYQT5 Mock一个摸鱼软件 类似于Thief 按键功能控制 q 退出 B 书签功能 F 增加字体大小 Shift F 减小字体 O 打开文件,现在仅仅支持 utf8格式的txt文件 主要功能 FlameLess Window 无边框窗口 一键快速退出 ini 文件读写 右键上下文菜单 核心代码 pyqt 实现功能还是比较顺畅的,

随机推荐