Nodejsはgitee実装コードに自動的に同期するドキュメント同期ツールを作成します

Nodejsはgitee実装コードに自動的に同期するドキュメント同期ツールを作成します

本来の意図

このツールを作った理由は、コンピューターを使用しているときにいつでも毎日の仕事や生活を記録できるようにするためです。通常は簡単に記録するだけです。こうすることで、自宅と職場で同時に記録を見ることができます。

こうすることで、後で整理するときに、いくつかのキーワードを見ると、特定のことを思い出すことができます。そのうちのいくつかは、将来記事にまとめるための下書きとして使用することもできます。このようにして、記事に始まりと終わりを持たせることができます。そうしないと、思いついたことをそのまま言うと、記事を書くのに非常に不利になります。

最初は手動で同期していましたが、面倒だったのでバッチファイルを使って一気に同期することにしました。

git プル

git を追加します。

git コミット -m '同期'

gitプッシュ

git ステータス

@エコーオフ

一時停止

しかし、まだいくつかの欠点があります。

1. 特に仕事が終わってすぐにコンピューターの電源を切るときなどは、同期を忘れてしまうことがあります。

2. 最初に同期を忘れると、後で git の競合が発生します。あまり良い経験ではありませんでした。

プログラムを書く

Nodejs と git は、デフォルトでコンピューターにインストールされている必要があります。

なぜなら、後で時間をかけて小さなプログラムを書くからです。プログラムをバックグラウンドで実行している限り、ドキュメントは定期的に自動的に同期されます。

変更されたローカル コンテンツは、git リポジトリに自動的に同期されます。git リポジトリ コンテンツが変更されると、最新のコンテンツが自動的にプルされ、ローカルに同期されます。これにより、リモート リポジトリとローカルが最新の状態になり、2 台のコンピューターのコンテンツが直接同期されます。

nodejs を使用して実装する方法を見てみましょう。

まず、データを保存するための Git リポジトリが必要です。

gitee.com にアクセスして、倉庫開設を申請してください。作成後、リモート倉庫のアドレスを取得し、後で使用するためにコピーします。

ドキュメントデータを同期するためのローカル フォルダーを作成します。

ファイル内でnpm init -yを実行してpackage.jsonを作成します。

リモート リポジトリをバインドするには:

git init #倉庫を初期化するgit remote add origin [倉庫のアドレス] 
git プッシュ元 
git push --set-upstream origin master #ウェアハウスの最初の同期

その後、ツールを直接実行できます。

フォルダに新しいファイルindex.jsを追加します

フォルダ内の依存パッケージをインストールする

糸にchild_processを追加
糸追加アイコンv-lite
糸を追加する瞬間

index.js にコードを記述します。

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

定数エンコーディング = "cp936";
const binaryEncoding = "バイナリ";

//cmdコマンドの行を実行する function cmd(text) {
  新しい Promise を返します ((resolve, reject) => {
    子プロセス.exec(
      文章、
      { エンコーディング: バイナリエンコーディング },
      (エラー = "", 標準出力 = "", 標準エラー出力) => {
        もし(エラー){
          解決(エラー);
          戻る;
        }
        解決します(iconv.decode(Buffer.from(stdout, binaryEncoding), encoding));
      }
    );
  });
}

//cmd 実行順序 async function run() {
  const time = moment().format("YYYY-MM-DD HH:mm:ss");
  status = cmd("git status") を待機します。
  もし (
    ステータス.includes(
      「git リポジトリ (または親ディレクトリのいずれか) ではありません: .git」
    )
  ){
    //ディレクトリはgitアドレスにバインドされていません console.log("ディレクトリはgitアドレスにバインドされていません");
  } それ以外 {
    //gitにバインド
    //プル const pull = await cmd("git pull");
    もし (
      !pull.includes("すでに最新です") &&
      !pull.includes("すでに最新です")
    ){
      // 最新データを取得します console.log(`最新データを取得します: ${time}`);
    }
    //ステータス status = await cmd("git status");
    if (status.includes('(use "git add"')) {
      //ローカル コンテンツが変更されたため、送信する必要があります await cmd("git add .");
      cmd('git commit -m "sync"') を待機します。
      cmd("git push") を待機します。
      console.log(`同期が成功しました: ${time}`);
    }
  }
}

//30秒ごとに実行 setInterval(() => {
  走る();
}, 1000 * 30);
走る();

これは、現在のディレクトリではなく、指定されたディレクトリ内のファイルを同期したいため、機能しません。したがって、指定されたディレクトリを同期するには、それを exe ファイルにパッケージ化し、同期する必要があるフォルダーに配置する必要があります。

まず、依存パッケージをグローバルにインストールします: pkg

npm インストール -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

コンピュータの電源を入れた後すぐにプログラムを起動できるようにするために、プログラムをスタートアップ項目に入れます。

フォルダを開き、このパスをフォルダに貼り付けてEnterキーを押します

%USERPROFILE%\AppData\Roaming\Microsoft\Windows\スタート メニュー\プログラム\スタートアップ

このファイルのショートカットをスタートアップ項目に配置すると、コンピューターの電源投入時に同期が実行され、常時同期が実現します。 30 秒ごとに最新かどうかを確認します。

これで、gitee に自動的に同期する nodejs のドキュメント同期ツールを作成する方法についての記事は終了です。関連する nodejs ドキュメント同期ツールのコンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Node.jsでWord文書パーサーを実装するアイデアの詳細な説明
  • クライアント上で Word 文書をエクスポートするための Nodejs (officegen) + vue (axios) メソッド
  • nodejs npm package.json 中国語ドキュメント

<<:  Firefox で Flash を再生するためのオブジェクトとパラメータの書き方

>>:  MySQL トランザクション分析

推薦する

Dockerfile を使用して SpringBoot プロジェクトをデプロイする方法

1. SpringBoootプロジェクトを作成し、jarパッケージにパッケージ化する2. Linux...

sed コマンドを使用して文字列を置換する Linux チュートリアル

文字列を置き換えるには、次の形式を使用する必要があります。 $ sed s/置換対象文字列/置換文字...

ServerManager の起動時にデータベースに接続できないエラーを解決する方法

Servermanager 起動時の接続データベース エラーmgrstart.batを実行しますエラ...

HTML テーブル マークアップ チュートリアル (30): セルの暗い境界線の色属性 BORDERCOLORDARK

セルでは、暗い境界線の色を個別に定義できます。基本的な構文<TD ボーダーコロダーク=colo...

JavaScript 配列のマージのケーススタディ

方法1: var a = [1,2,3]; var b = [4,5] b を連結します。 コンソー...

シェルスクリプトを使用して CentOS7 に python3.8 環境をインストールする (推奨)

ワンクリック実行仮想マシンに Python 3.8 をインストールするには、ネットワーク アダプター...

VMware での Ubuntu と Windows 間のファイル共有

この記事では、VMware 環境下で Ubuntu と Windows 間でファイルを共有する方法を...

MySQLのエンコードの不一致によって発生する可能性のある問題

ストアドプロシージャとコーディングMySQL ストアド プロシージャでは、テーブルとデータのエンコー...

キャンバスでPS消しゴムスクラッチカードの効果を実現するためのJSの使用方法の詳細な説明

目次効果のデモンストレーション:メインJSコード実装 <div class="box...

CSSは左固定と右適応のレイアウト方法を実現します

1. フローティングレイアウト1. 最初に固定幅の div をフロートさせます。ドキュメントフローか...

怖いハロウィーン Linux コマンド

ハロウィーンではありませんが、Linux の不気味な側面に注目する価値はあります。幽霊、魔女、ゾンビ...

js でショッピングモールのシミュレーションを実現

HTML、CSS、JSフロントエンドを学習中の皆さん、今回はショッピングモールの事例の実装をシェアし...

JavaScript データ型変換の例 (他の型を文字列、数値型、ブール型に変換する)

序文データ型変換とは何ですか?フォームまたはプロンプトを使用して取得されるデフォルトのデータ型は文字...

MySQLカーソルの詳細な紹介

目次1. カーソルとは何ですか? 2. カーソルの使い方1. カーソルを宣言する2.カーソルを開く3...

HTML をホームページとして設定し、お気に入りに追加_Powernode Java Academy

IE ブラウザで「ホームページとして設定」および「お気に入りに追加」機能を実装する方法解決:指定さ...