メインコンテンツへスキップ

OpenSourceにコントリビュートしてみる:Zenn Preview articleソート編

· loading · loading ·
kiitosu
著者
kiitosu
画像処理やデバイスドライバ、データ基盤構築からWebバックエンドまで、多様な領域に携わってきました。地図解析や地図アプリケーションの仕組みにも経験があり、幅広い技術を活かした開発に取り組んでいます。休日は草野球とランニングを楽しんでいます。
目次

はじめに
#

以下に記載したようにgithubからコントリビュートを誘われている。

また、以前lambda power toolsのコントリビューも試みたが、登録したissueがメンテナーの確認待ちで動かないので別件も進めてみる。

:::message 2025/08/13 追記!変更がマージされリリースされました!

:::

概要
#

Zenn PreviewというVSCode拡張を使わせてもらっているが、記事一覧がソートされておらず、探すのが大変. 今回は記事一覧をソートする機能を追加してPRを出してみようと思う。

vscode拡張の開発
#

vscode拡張の開発をしたことがないので、雰囲気でやってみる。 まずは拡張機能のレポジトリを見に行く。

特にコントリビュートガイドのようなものはなさそうなので、適当にやってみる。

開発環境準備
#

まずはforkして

cloneして

git clone git@github.com:kiitosu/zenn-vscode-extension.git

npm installして

npm install

ビルド. 警告がいっぱい出るけどとりあえず無視

vsce package

ビルドした VSIX ファイルを使って拡張機能をインストール

とりあえずここまでで拡張機能の開発、動作確認の手順はてきたっぽい.

:::message 今回拡張のバージョンは変更していないのでインストール時に注意が必要です。 インストール済みのものをアンインストールして、ビルドしたVSIXファイルをインストールしても、公式版がキャッシュに残っているためにそちらを使ってしまいます。以下のようにアンインストール後にキャッシュを削除する必要があります $ rm -rf ~/.vscode/extensions/zenn.zenn-preview-0.3.0 :::

修正する
#

Clineに相談しながら進める。 変更点

変更はソート関数だけ

  static sortTreeItems(items: PreviewTreeItem[]): PreviewTreeItem[] {
    return items.sort((a, b) => {
      // vscode.TreeItem.label は string | TreeItemLabel | undefined
      const getCleanLabel = (item: PreviewTreeItem): string => {
        const labelProp = item.label;
        let labelStr = "";
        if (typeof labelProp === "string") {
          labelStr = labelProp;
        } else if (labelProp && typeof labelProp.label === "string") {
          labelStr = labelProp.label;
        }
        return labelStr.replace(EMOJI_REGEX, "").trim();
      };

      const aCleanLabel = getCleanLabel(a);
      const bCleanLabel = getCleanLabel(b);

      if (aCleanLabel || bCleanLabel) { // どちらかに絵文字除去後ラベルがあれば比較
        return naturalCompare(aCleanLabel, bCleanLabel);
      }

      // 絵文字除去後ラベルが両方空の場合はpathで比較 (元々ラベルがなかった場合など)
      return naturalCompare(a.path, b.path);
    });
  }

修正後の拡張期のを使った結果
#

無事ソートできるようになりました!

プルリクエスト
#

これでローカルではロートできるようになったわけですが、本家にPRを出してみます。

とここまで来て衝撃の事実! コントリビュートガイドラインがあった! リポジトリ単体ではなく、zenn関連の開発全てのガイドラインがあるみたい。

とりあえずリンク先の情報は読んで、プルリクエストを出してみました。 マージしてもらえるかな?

最後に
#

以上です! 昨今の生成AIの手助けのお陰で思ったより簡単に作業ができました。 マージされることを祈ります 🙏

Reply by Email

関連記事

Open Sourceへのコントリビュートのお誘い。githubからのメール
· loading · loading
オープンソースなセキュリティアラート管理プラットフォームである`Warren`について調べてみた
· loading · loading
github commit メッセージ検索
· loading · loading