🙄

Vue.jsコンポーネントの依存関係を可視化する「Voyager」を暫定公開しました

に公開

約半年ぐらい前にVoyagerというツールの開発を始めたことを書きました。

https://khasegawa.hatenablog.com/entry/2025/02/21/110145

全然進められていなかったんですが、少しだけ時間ができたので暫定的に公開しました、という紹介です。

https://github.com/corrupt952/voyager

Voyager

改めてVoyagerについて紹介すると、Vueのコンポーネントの依存関係を簡単に可視化するためのツールです。

インストール

インストールはすごく簡単で npm install -g @voyager-vue/cli でインストールすることができます。
GitHubのREADMEを読んでもらえるといいかもしれません。

https://www.npmjs.com/package/@voyager-vue/cli

機能

現時点の機能としては3つしかありません。
どれも完成度は低いのであまり期待しないでください。

graph(HTMLで可視化)

Vueコンポーネントの依存関係をインタラクティブなHTMLとして可視化する機能です。
単一HTMLを出力するので、CIのアーティファクトで保存した結果などを確認することも可能です。

deps(依存関係の表示)

Terminal上で特定ファイルの依存関係をツリー形式で表示する機能です。
どのファイルをインポートしているか、どのファイルからインポートされているかを確認可能することができ、影響範囲を特定することができます。

$ voyager deps vue-element-admin -t src/components/Breadcrumb/index.vue

index.vue
├── imports (1):
│   └── path-to-regexp
└── imported by (1):
    └── src/layout/components/Navbar.vue

stats(統計情報の表示)

プロジェクト全体の統計情報(ファイル数、循環参照、孤立コンポーネント、最も多くインポートされているファイルなど)を表示する機能です。
現状だとあまり意味のない数値も混じっているので、今後アップデートで強化予定です。

$ voyager stats vue-element-admin
📊 Component Statistics

Files:
  Total files: 210
  Vue components: 131
  Script files: 82
  Type definitions: 0

Dependencies:
  Total imports: 195
  Circular dependencies: 0
  Orphaned components: 93

Most imported files:
  src/api/article.js - 11 imports
  src/utils/index.js - 8 imports
  src/store/index.js - 7 imports
  src/api/qiniu.js - 6 imports
  src/utils/request.js - 6 imports
  src/utils/validate.js - 6 imports
  src/layout/index.vue - 5 imports
  src/components/PanThumb/index.vue - 5 imports
  src/router/index.js - 4 imports
  src/views/dashboard/admin/components/mixins/resize.js - 4 imports

今後の予定

あまり時間がとれないので、時間がある時に少しずつにはなりますが、

  • 配置アルゴリズムの最適化
  • ストアとコンポーネントの関係性の可視化
  • PropsとEmitの詳細な関係表示
  • パフォーマンス分析機能

といった前回からの機能に加え、

  • VSCode拡張
  • ファイルごとの詳細なStats
  • junit系ツールへの対応

なども検討はしています。

おわりに

まだ開発初期段階ですが、より良いVue.jsの開発体験を提供できるよう、機能を充実させていきたいと考えています。

興味を持っていただけた方は、GitHubをチェックしていただけると嬉しいです。
また、フィードバックやコントリビューションも大歓迎です!

Discussion