@andriyorehov/ts-graph
TypeScript icon, indicating that this package has built-in type declarations

1.0.2 • Public • Published

ts-tree

Creates a module tree based on a given entrypoint.

Builds on top of ts-morph

Install

npm i @andriyorehov/ts-graph

Usage

import { getTreeByFile } from '@andriyorehov/ts-graph';

const tree = getTreeByFile('filePath.ts');
console.dir(tree, { depth: null });

Comparison table

Feature/Name ts-tree module-graph node-dependency-tree
ts support ✅ TypeScript (via typescript) ✅ es-module-lexer
ts alias support issue
jsx support issue
not ts project support
circular dependencies handling ❌ use dpdm

TODO

  • [x] tree by folder dependencies
  • [x] tree by file dependencies
  • [x] ignore third-party dependencies
  • [x] alias handling
  • [x] ignore types/interface/enum/as const dependencies from file tree
  • [x] ignore types/interface/enum/as const dependencies from folder tree
  • [x] ignore object which used only in types for folder tree
  • [x] handle ExportDeclaration with moduleSpecifier
  • [x] exclude barrel files from file tree
  • [x] exclude barrel files from folder tree
  • [x] guarantee id uniqueness of file tree
  • [x] guarantee id uniqueness of folder tree
  • [x] pass meta info about files to file tree
  • [ ] pass meta info about files to folder tree
  • [x] arg parser for file tree
  • [x] include used export by parent
  • [x] check named imports from same file on different lines for file tree
  • [ ] check named imports from same file on different lines for folder tree
  • [x] handle default import for file tree
  • [x] handle default import for folder tree
  • [x] build package
  • [x] use tsconfig related to passed file path to allow running not from project root directory
  • [x] publish to npm
  • [x] handle files outside of folder tree
  • [x] return flat list to simplify processing
  • [ ] create separate method with flat structure and use getReferencingSourceFiles, include types, barrel files, styles
  • [ ] check barrel files handling for default import
  • [ ] circular dependencies handling?
  • [ ] how to get file deps with skipAddingFilesFromTsConfig: false, skipFileDependencyResolution: false,

Tech Debt

  • [x] try https://github.com/thepassle/module-graph
  • [x] reuse code between file and folder tree builder
  • [x] cache file tree builder? (don't need since id need to be unique for each node)
  • [x] improve performance
  • [x] use getReferencingSourceFiles instead own resolution implementation? in such case I will not able to ignore types/interface/enum/as const and barrel files
  • [ ] fix eslint
  • [ ] add test for folder tree id uniqueness
  • [ ] upgrade find-up to latest version with ESM
  • [ ] try find-up-simple (ESM)

Readme

Keywords

none

Package Sidebar

Install

npm i @andriyorehov/ts-graph

Weekly Downloads

12

Version

1.0.2

License

ISC

Unpacked Size

20 kB

Total Files

10

Last publish

Collaborators

  • andriyorehov