nodejs制作一個文檔同步工具自動同步到gitee中的實現(xiàn)代碼
初衷
之所以要做這個工具是為了讓自己可以隨時用電腦時能記錄日常工作或生活。一般只需要簡單記錄下就行了。這樣我在家里的和公司里的記錄都能同步看到。
這樣后期整理的時候看到幾個關(guān)鍵詞就能想起來具體的事情,有的也可以為日后整理成文章做一個草稿,這樣寫文章才能有頭有尾,否則想到什么說什么是非常不利于寫出文章的。
一開始我使用手動同步的方式,但是發(fā)現(xiàn)很麻煩,之后就直接用了個批處理文件來一次性同步。
git pull
git add .
git commit -m '同步'
git push
git status
@echo off
pause
但是這樣還是有幾個缺點:
1.有時候會忘記執(zhí)行同步,特別是下班的時候,直接關(guān)機的。
2.如果一開始忘記同步了,后面就會產(chǎn)生git沖突。體驗不是太好。
寫程序
電腦上需要默認(rèn)安裝nodejs和git。
因為后來抽時間寫了個小程序。只要把程序運行在后臺,每過一段時間就會自動將文檔同步起來。
本地改過內(nèi)容會自動同步到git倉庫,git倉庫內(nèi)容被改后,又會自動拉取最新內(nèi)容同步到本地,這樣就能保證遠(yuǎn)程倉庫和本地最新了,兩臺電腦直接的內(nèi)容也就同步了。
我們來看下使用nodejs如何實現(xiàn):
首先我們必須要有個git倉庫用來存儲數(shù)據(jù)。
去gitee.com申請開個倉庫就行。創(chuàng)建后得到遠(yuǎn)程倉庫的地址,復(fù)制下來備用。
本地創(chuàng)建一個文件夾用于同步文檔數(shù)據(jù)。
文件加中執(zhí)行npm init -y
創(chuàng)建package.json
進行綁定遠(yuǎn)程倉庫:
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"; //執(zhí)行一行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") ) { //拉取下來了最新數(shù)據(jù) console.log(`拉取了最新數(shù)據(jù): ${time}`); } //狀態(tài) status = await cmd("git status"); if (status.includes('(use "git add"')) { //本地內(nèi)容有改動 需要提交 await cmd("git add ."); await cmd('git commit -m "同步"'); await cmd("git push"); console.log(`同步成功: ${time}`); } } } //每30秒執(zhí)行一次 setInterval(() => { run(); }, 1000 * 30); run();
這樣還不行,因為我們要同步的是指定目錄的文件,不是當(dāng)前目錄的文件。所以我們要將其打包成一個exe文件,放到需要同步的文件夾中,才能同步指定目錄。
首先我們?nèi)职惭b一個依賴包:pkg
npm install -g pkg
然后在工具的目錄中執(zhí)行:
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
我們將這個文件的快捷方式放入到開機啟動項中,這樣開機就會執(zhí)行同步了,實現(xiàn)一直同步。每30秒都會去檢查下是否是最新的。
到此這篇關(guān)于nodejs制作一個文檔同步工具自動同步到gitee中 的文章就介紹到這了,更多相關(guān)nodejs文檔同步工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
NodeJS連接MySQL數(shù)據(jù)庫并進行增刪改查操作詳解
本篇是使用NodeJS的模塊MySQL操作MySQL數(shù)據(jù)庫的基礎(chǔ)教程,連接MySQL數(shù)據(jù)庫并進行增刪改查操作詳解,需要的朋友可以參考下2024-02-02PHP和NodeJs開發(fā)的應(yīng)用如何共用Session
這篇文章主要介紹了PHP和NodeJs開發(fā)的應(yīng)用如何共用Session的相關(guān)資料及思路,需要的朋友可以參考下2015-04-04關(guān)于Error:EPERM:operation?not?permitted,mkdir...的幾種解決辦法對比
這篇文章主要給大家介紹了關(guān)于Error:EPERM:operation?not?permitted,mkdir...的幾種解決辦法對比,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2023-01-01Node環(huán)境中JS代碼缺少window對象的原因和解決方案
你可能會在某些情況下需要在Node環(huán)境下運行JavaScript代碼,但你也可能會遇到一個常見的問題:缺少window環(huán)境,在本文中,我們將深入探討這個問題的原因,并提供解決方案,需要的朋友可以參考下2023-08-08用node-webkit把web應(yīng)用打包成桌面應(yīng)用(windows環(huán)境)
這篇文章主要介紹了windows環(huán)境下用node-webkit把web應(yīng)用打包成桌面應(yīng)用的教程,需要的朋友可以參考下2018-02-02