TypeScript, JavaScript és Vue call graph
A callgraph az oxc-vel elemzi a JavaScript-, TypeScript- és Vue single-file komponenseket, és megadja az agentnek a modulokat, függvényeket, osztályokat, a komponensek propsait és emitjeit, a template-használatot és minden hívást kategóriánként — és hogy ki használ egy függvényt, komponenst, route-ot vagy fordítási kulcsot a projektben.
Mit nyer ki a callgraph
Fájlok: .js .mjs .cjs .jsx .ts .tsx
.vue.
- Modulok, függvények és osztályok; TS
interface-ek és az osztályokimplements-e. - Importok alias-feloldással a
jsconfig.json/tsconfig.jsonalapján (a@/alias is). - Az objektum-literálok függvényei külön metódusként:
const api = { fetch() {} }→api.fetch. if/switchágak, string- és template-literálok.
Vue single-file komponensek
A .vue fájl egy component. A „metódusai” azok, amik alapján egy agent eligazodik benne:
setup— a<script setup>top-level kódja.template— a használt komponensek, eseménykezelők,$t()- ésroute()-hívások.- Függvények,
computed,watch@L<n>/onMounted@L<n>hookok, egy composable belső függvényei (useX.belso), és az Options APImethods/computed.xelemei. - A props property-ként, az emitek
emit:<név>alakban látszanak.
A hívások kategóriái között van a vue_api, composable_use, component_use,
vue_emit, inertia, i18n_helper, route_helper (Ziggy),
http_call (axios), module_use és a package_use.
Ki használja ezt a függvényt, komponenst vagy kulcsot?
Ugyanaz a --grep kapcsoló frontend-specifikus kulcsokat is ért:
CG=~/.claude/skills/callgraph/callgraph.sh
bash $CG --project myapp resources/js --grep 'useForm.js::submit' # <fájl>::<export>, import-feloldással, @/ aliasszal
bash $CG --project myapp resources/js --grep 'route::orders.show' # route-használat
bash $CG --project myapp resources/js --grep 'i18n::orders.title' # fordítási kulcs helye
bash $CG --project myapp resources/js --grep 'vue::emit:save' # ki emitál 'save'-et
bash $CG --project myapp resources/js --grep 'Atoms/AtomButton.vue' # hol használják a komponenst
bash $CG --project myapp resources/js --grep 'api.fetch' # objektum-literál metódusa
A --strings a Vue template-kifejezésekben ({{ … }}, :title="…",
@click="…") lévő szövegeket is megtalálja.
TypeScript: hívások típusos objektumokon át
Ha a típus le van írva, a callgraph kiszámolja, melyik osztályhoz megy egy metódushívás: típusos paraméter
(repo: Repo), típusos osztály-property (private repo: Repo, a
constructor(private repo: Repo) is), this.repo = new Repo() vagy
const x = new Repo(). Így a this.repo.find() Repo::find lesz, és a
--grep 'Repo::find' megtalálja. Az interfészen át tett hívások via Resolver jelölést kapnak.
bash $CG --project myapp resources/js --grep 'PlaylistResolver::getPlayables'
Ha a típus nem egyértelmű — nincs típus, any, unió, mint a Repo | null, generikus
T —, a hívás feloldatlan marad; ezeket név szerint keresd: --grep '(^|::|\.|->)find$'.
Korlátok
- A dinamikus hívások (
obj[key]()) és a futásidőben regisztrált komponensek statikusan nem oldhatók fel. - A hivatkozott típusnévvel megadott
defineProps<Props>()nem listáz propsot (a típus nincs feloldva).