Deprank
Deprank uses the PageRank algorithm to find the most important files in your JavaScript or TypeScript codebase. It uses dependency-cruiser to build a dependency graph of your source files, then ranks those dependencies based on their importance. We define importance as those files which are directly or indirectly depended upon the most by other files in the codebase.
Deprank is particularly useful when converting an existing JavaScript codebase to TypeScript. Performing the conversion in strict PageRank order can dramatically increase type-precision, reduce the need for any
and minimizes the amount of rework that is usually inherent in converting large codebases.
Usage
Rank all files in the src
directory:
npx deprank ./src
Rank all .js
and .jsx
files in the src
and test
directories:
npx deprank --ext=".js,.jsx" ./src ./test
Example
npx deprank ./fixtures
| Filename | Lines | Dependents | PageRank |
----------------------------------------------------------
| fixtures/core.js | 3 | 1 | 0.284098 |
| fixtures/utils.js | 4 | 3 | 0.268437 |
| fixtures/user/user.js | 4 | 1 | 0.132253 |
| fixtures/todo.js | 6 | 1 | 0.089796 |
| fixtures/user/index.js | 1 | 1 | 0.089796 |
| fixtures/concepts.js | 4 | 1 | 0.079694 |
| fixtures/index.js | 4 | 0 | 0.055926 |
Building Locally
- Clone this repository:
git clone [email protected]:codemix/deprank.git
- Get yarn.
- Navigate into the project folder:
cd deprank/
. - Run
yarn install
&&yarn build
. - Run
./bin/deprank --help
TypeScript Conversion
To help convert your codebase to TypeScript whilst minimizing the amount of effort required, we suggest converting files in deprank --deps-first
order. This option lifts the files that are depended upon by the most important files in the codebase to the top of the list. By tackling each file in order we help ensure that type errors are solved at their origin, rather than their point of use. This can reduce the number of type errors much more quickly than the more typical, ad-hoc order that such conversions usually take, and it helps TypeScript use inference which reduces the amount of manual typing required. It's not uncommon to see hundreds or thousands of type errors disappear just by fixing a few key files.
The following command will find all .js
or .jsx
files in a src
folder, and sort them in dependency-first order.
npx deprank --ext=".js,.jsx" --deps-first ./src
Author
deprank was written by Charles Pick at Codemix