ラッシュとChangelogの生成-パート2


私は、私が単独でそのラッシュを望んでいないと思いますuses commit messages 変更ログ生成用.
それは実際には難しくない😎).

要件
  • 変更ログファイルを生成するためにコミットメッセージを使いたい.私はすでに正しいフォーマットを確実にするためにCommitLintとそれらをlint.
  • フォローしたいconventional commits 変更ログを生成する際の仕様、およびバージョンをバインディングする

  • FIX :型のコミットfix あなたのコードベースのバグをパッチしますPATCH セマンティックバージョン管理において.

  • feat :タイプfeatのコミットはCodeBaseに新しい機能を導入しますMINOR セマンティックバージョン管理において.

  • 変化を破る:フッターを持つコミットBREAKING CHANGE: , または! タイプ/スコープの後に、MAJOR セマンティックバージョン管理において.壊れた変化はどんなタイプのコミットの一部でありえます.
  • 他の種類fix: and feat: 例えば、@ commit lint/config通常推奨を許可しますbuild: , chore: , ci: , docs: , style: , refactor: , perf: , test: , など.
  • 私のコミットがそうでないならばfix: , feat: , または壊れた変更、ラッシュ変更ファイルを生成したくない.
  • 私が同じメッセージでコミットしているなら、私は変更ファイル生成をスキップしたいです.
  • 私はそれを確認したいrush change --verify コードをプッシュする前にパスします.私は自分のPRが失敗することを知りたくない.なぜなら、私はそれを生成するのを忘れてしまったからだ.

  • デザイン

    トリガpost-commit

    This hook is invoked by git commit. It takes no parameters, and is invoked after a commit is made.
    This hook is meant primarily for notification, and cannot affect the outcome of git commit.


    パーフェクト.私はとにかく最後の2つのコミットを取りたいです、そして、私のコードのどんな失敗もコミットに影響しないことを確認したいです.

    カスタムラッシュコマンド
    フックはカスタムラッシュコマンドを呼び出します.カスタムコマンドを使用する利点の一つは、すべての必須パッケージをインストールするautoinstallersから利益を得ることです

    オートインストーラ
    ラッシュautoinstaller私のスクリプトで必要なパッケージをインストールする気になります.私はレポのルートにそれらをインストールしたくないです、これはラッシュがどのように働くかではありません.

    そして最後に、スクリプトそのもの
    JavaScriptスクリプト.まあ、はい、ビジネスロジック.

    マイツールボックス
    私はここでのカップルが必要です.

  • @microsoft/rush-lib
  • RushConfiguration 「ラッシュ. JSON」設定ファイルに基づくリポジトリのラッシュ設定を表すクラスです.
  • ProjectChangeAnalyzer これは変更されたプロジェクトのリストを取得します注意:これはまだプレビューです.このAPIを生産環境で使用しないでください.
  • ChangeManager ラッシュの変更ファイルとプログラム的に相互作用するのを助けるクラス.

  • @rushstack/node-core-library 提供Terminal and ConsoleTerminalProvider 呼び出すときに必要なクラスprojectAnalyzer.getChangedProjectsAsync .

  • gitlog : ノードのGitログパーサー.複数の行にまたがってもコミットを正しく読むための解決策が必要だからです.

  • recommended-bump 従来のコミット仕様を尊重する推奨バンプを計算します.

  • レディ?安定した?行け!

    オートインストーラ
    あなたはドリルを知っている.クリエイトrush-changemanager 次のコマンドを使用したautoinstaller
    rush init-autoinstaller --name rush-changemanager
    cd common/autoinstallers/rush-changemanager
    
    pnpm add @microsoft/rush-lib
    pnpm add @rushstack/node-core-library
    pnpm add gitlog
    pnpm add recommended-bump
    # When you are finished, run this command to ensure that the
    # common/autoinstallers/rush-commitizen/ppnpm-lock.yaml file is up to date
    rush update-autoinstaller --name rush-changemanager
    
    次のパッケージが必要です.JSONファイル

    一般的な\autoinstallers\ラッシュchangemanager\パッケージ.JSON
    {
      "name": "rush-changemanager",
      "version": "1.0.0",
      "private": true,
      "dependencies": {
        "@microsoft/rush-lib": "^5.62.4",
        "@rushstack/node-core-library": "^3.45.0",
        "gitlog": "^4.0.4",
        "recommended-bump": "^1.5.2"
      }
    }
    

    カスタムコマンド
    追加するchangefiles コマンド行へのコマンド.JSONファイル

    一般的な\config\ラッシュ\コマンドライン.JSON
    {
      "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/command-line.schema.json",
      "commands": [
        {
          "name": "changefiles",
          "commandKind": "global",
          "summary": "",
          "autoinstallerName": "rush-changemanager",
          "shellCommand": "node common/scripts/rush-changefiles.js"
        }
      ],
      //...
    }
    

    脚本
    ラッシュchangefilesを作成します.一般的な\スクリプトフォルダのjsファイル.
    ビジネスロジックの実装に飛び込む前に、すべての作業を確実にしましょう.コンソール出力に「ラッシュchangefiles . js」を印刷するだけです.

    一般的な\スクリプト\ラッシュchangefiles.js
    console.log("rush-changefiles.js")
    

    テスト
    新しい呼び出しchangefiles コマンド
    rush changefiles
    
    ラッシュが新しいコマンドを実行し、autoinstallerによって必要とされるすべてのパッケージをインストールし、コンソールに「ラッシュchangefiles . js」を出力することがわかります.
    autoinstallerジョブは、最初に実行されますrush changefiles 再び、それははるかに速く完了します

    さて、不足している唯一のものは、実際のビジネスロジックです.

    ソースコード
    ソースコードを見つけることができますGitHub .