deps-report
v0.5.0
Published
Generate reports about dependencies and dependents of your JavaScript/TypeScript files through an AST. It supports import and require statements.
Downloads
16
Maintainers
Readme
deps-report
Generate reports about dependencies and dependents of your JavaScript/TypeScript files through an AST. It supports import
and require
statements.
Parsers used:
- flow-parser for
.js
files - typescript for
.ts
files
Install
npm install -g deps-report
Screenshots
CLI Usage
Usage: deps-report [options] [command]
Options:
-V, --version output the version number
-j, --json Output results in JSON format
-p, --pretty Pretty-print JSON output (implies --json)
-a, --abs-path Print absolute path of dependencies/dependents
-e, --exclude-node-modules Don't consider node_modules dependencies
-w, --webpack-config [webpackConfigFile] Webpack config file for resolving aliased modules
-s, --specifiers Show specifiers imported by the dependency/dependent
--no-color Display terminal output without colors
-h, --help output usage information
Commands:
find-dependencies [options] <glob> [otherGlobs...]
Usage: find-dependencies [options] <glob> [otherGlobs...]
Options:
-c, --circular Show if there are some circular dependencies
--only-not-found Show all modules that have no dependencies
--hide-not-found Hide all modules that have no dependencies
--only-circular Show only circular dependencies
-h, --help output usage information
find-dependents [options] <glob> [otherGlobs...]
Usage: find-dependents [options] <glob> [otherGlobs...]
Options:
-r, --root [root] Root folder from where to start the search. Default is the dirname of each glob entry
-c, --circular Show if there are some circular dependencies
--only-not-found Show all modules that no one is depending on
--hide-not-found Hide all modules that no one is depending on
--only-circular Show only circular dependencies
-h, --help output usage information
Examples find-dependencies
$ deps-report find-dependencies tests/project-react-js-test/src/App.js
Processed 1 file in 122.297ms.
tests/project-react-js-test/src/App.js, found 3 dependencies:
1) react
2) ./logo.svg
3) ./App.css
$ deps-report -s find-dependencies tests/project-react-js-test/src/App.js
Processed 1 file in 127.538ms.
tests/project-react-js-test/src/App.js, found 3 dependencies:
1) react, specifiers imported: default as React, Component
2) ./logo.svg, specifiers imported: default as logo
3) ./App.css
$ deps-report -a find-dependencies 'tests/project-react-js-test/src/*.js'
Processed 4 files in 149.446ms.
tests/project-react-js-test/src/App.js, found 3 dependencies:
1) react
2) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/logo.svg
3) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/App.css
tests/project-react-js-test/src/App.test.js, found 3 dependencies:
1) react
2) react-dom
3) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/App.js
tests/project-react-js-test/src/index.js, found 5 dependencies:
1) react
2) react-dom
3) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/index.css
4) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/App.js
5) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/registerServiceWorker.js
tests/project-react-js-test/src/registerServiceWorker.js, found 0 dependencies:
No dependencies found!
$ deps-report -ae find-dependencies 'tests/project-react-js-test/src/*.js'
Processed 4 files in 139.507ms.
tests/project-react-js-test/src/App.js, found 2 dependencies:
1) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/logo.svg
2) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/App.css
tests/project-react-js-test/src/App.test.js, found 1 dependency:
1) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/App.js
tests/project-react-js-test/src/index.js, found 3 dependencies:
1) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/index.css
2) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/App.js
3) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/registerServiceWorker.js
tests/project-react-js-test/src/registerServiceWorker.js, found 0 dependencies:
No dependencies found!
$ deps-report -ae find-dependencies 'tests/project-react-js-test/src/*.js' '!tests/project-react-js-test/src/**/*.test.js'
Processed 3 files in 141.737ms.
tests/project-react-js-test/src/App.js, found 2 dependencies:
1) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/logo.svg
2) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/App.css
tests/project-react-js-test/src/index.js, found 3 dependencies:
1) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/index.css
2) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/App.js
3) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/registerServiceWorker.js
tests/project-react-js-test/src/registerServiceWorker.js, found 0 dependencies:
No dependencies found!
$ deps-report -w tests/project-test/webpack.config.js find-dependencies tests/project-test/a.js
Processed 1 file in 109.559ms.
tests/project-test/a.js, found 12 dependencies:
1) path
2) fs
3) ./c/d.js
4) Utilities/index.js
5) UtilitiesRelativePath
6) Utilities/utilityA.js
7) Templates/main.js
8) TemplatesMain
9) MyPath
10) fs
11) ./e/b.js
12) ./c/d.js
$ deps-report -w tests/project-test/webpack.config.js find-dependencies --only-circular tests/project-test/a.js
Processed 1 file in 153.199ms.
tests/project-test/a.js, found 2 dependencies:
1) ./c/d.js
2) ./c/d.js
$ deps-report -ae -w tests/project-test/webpack.config.js find-dependencies tests/project-test/a.js
Processed 1 file in 118.478ms.
tests/project-test/a.js, found 8 dependencies:
1) /Users/lorenzo/Desktop/deps-report/tests/project-test/c/d.js
2) /Users/lorenzo/Desktop/deps-report/tests/project-test/src/utilities/index.js
3) /Users/lorenzo/Desktop/deps-report/tests/project-test/src/utilities/relative.js
4) /Users/lorenzo/Desktop/deps-report/tests/project-test/src/utilities/utilityA.js
5) /Users/lorenzo/Desktop/deps-report/tests/project-test/src/templates/main.js
6) /Users/lorenzo/Desktop/deps-report/tests/project-test/src/templates/main.js
7) /Users/lorenzo/Desktop/deps-report/tests/project-test/e/b.js
8) /Users/lorenzo/Desktop/deps-report/tests/project-test/c/d.js
$ deps-report -w tests/project-test/webpack.config.js find-dependencies --only-not-found "tests/project-test/*.ts"
Processed 1 file in 42.623ms.
tests/project-test/c.ts
JSON format example:
$ deps-report -jps find-dependencies -c tests/project-react-js-test/src/App.js
{
"tests/project-react-js-test/src/App.js": {
"absolutePath": "/Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/App.js",
"files": 3,
"dependencies": [
{
"importPath": "react",
"importAbsolutePath": "react",
"isCircularDependency": null,
"isNodeModule": true,
"specifiers": [
{
"name": "React",
"alias": "",
"isDefault": true
},
{
"name": "Component",
"alias": "",
"isDefault": false
}
]
},
{
"importPath": "./logo.svg",
"importAbsolutePath": "/Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/logo.svg",
"isCircularDependency": false,
"isNodeModule": false,
"specifiers": [
{
"name": "logo",
"alias": "",
"isDefault": true
}
]
},
{
"importPath": "./App.css",
"importAbsolutePath": "/Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/App.css",
"isCircularDependency": false,
"isNodeModule": false,
"specifiers": []
}
]
}
}
Examples find-dependents
$ deps-report find-dependents tests/project-react-js-test/src/App.js
Processed 1 file in 199.088ms.
tests/project-react-js-test/src/App.js, found 2 dependents:
1) tests/project-react-js-test/src/App.test.js
2) tests/project-react-js-test/src/index.js
$ deps-report -s find-dependents tests/project-react-js-test/src/App.js
Processed 1 file in 197.761ms.
tests/project-react-js-test/src/App.js, found 2 dependents:
1) tests/project-react-js-test/src/App.test.js, specifiers imported: default as App
2) tests/project-react-js-test/src/index.js, specifiers imported: default as App
$ deps-report -as find-dependents tests/project-react-js-test/src/App.js
Processed 1 file in 199.046ms.
tests/project-react-js-test/src/App.js, found 2 dependents:
1) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/App.test.js, specifiers imported: default as App
2) /Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/index.js, specifiers imported: default as App
$ deps-report find-dependents tests/project-test/a1.ts
Processed 1 file in 191.590ms.
tests/project-test/a1.ts, found 0 dependents:
No dependents found!
$ deps-report find-dependents -c -r tests/project-test tests/project-test/c/d.js
Processed 1 file in 218.268ms.
tests/project-test/c/d.js, found 4 dependents:
1) tests/project-test/a.js, Circular Dependency
2) tests/project-test/e/b.js
3) tests/project-test/a.ts
4) tests/project-test/b.ts
$ deps-report -es -w tests/project-test/webpack.config.js find-dependents -r tests/project-test/ tests/project-test/src/utilities/index.js tests/project-test/src/templates/main.js
Processed 2 files in 852.220ms.
tests/project-test/src/utilities/index.js, found 2 dependents:
1) tests/project-test/a.js, specifiers imported: default as Utilities
2) tests/project-test/a.ts, specifiers imported: default as Utilities
tests/project-test/src/templates/main.js, found 3 dependents:
1) tests/project-test/a.js, specifiers imported: default as templates
2) tests/project-test/src/utilities/index.js, specifiers imported: default as templates
3) tests/project-test/a.ts, specifiers imported: default as templates
You can search also images and css files imported in your javascript files (such as in a React project):
$ deps-report -s find-dependents tests/project-react-js-test/src/logo.svg
Processed 1 file in 218.263ms.
tests/project-react-js-test/src/logo.svg, found 1 dependent:
1) tests/project-react-js-test/src/App.js, specifiers imported: default as logo
$ deps-report find-dependents tests/project-react-js-test/src/App.css
Processed 1 file in 213.301ms.
tests/project-react-js-test/src/App.css, found 1 dependent:
1) tests/project-react-js-test/src/App.js
JSON format example:
$ deps-report -jps find-dependents -c tests/project-react-js-test/src/App.js
{
"tests/project-react-js-test/src/App.js": {
"absolutePath": "/Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/App.js",
"files": 2,
"dependents": [
{
"filePath": "tests/project-react-js-test/src/App.test.js",
"fileAbsolutePath": "/Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/App.test.js",
"importPath": "./App.js",
"importAbsolutePath": "/Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/App.js",
"isCircularDependency": false,
"specifiers": [
{
"name": "App",
"alias": "",
"isDefault": true
}
]
},
{
"filePath": "tests/project-react-js-test/src/index.js",
"fileAbsolutePath": "/Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/index.js",
"importPath": "./App.js",
"importAbsolutePath": "/Users/lorenzo/Desktop/deps-report/tests/project-react-js-test/src/App.js",
"isCircularDependency": false,
"specifiers": [
{
"name": "App",
"alias": "",
"isDefault": true
}
]
}
]
}
}
API Usage
const depsReport = require('deps-report')
// find-dependencies command options
let optionsFindDependencies = {
circular: false, // if true, it will try to see if there are some circular dependencies with input files
onlyCircular: false, // if true, it will return only dependecies with circular dependency with input files
onlyNotFound: false, // if true, it will return all modules that have no dependencies
hideNotFound: false, // used only for CLI output
parent: {
excludeNodeModules: false, // if true, it will exclude all node modules
json: false, // used only for CLI output
pretty: false, // used only for CLI output
absPath: false, // used only for CLI output
color: false, // used only for CLI output
webpackConfig: 'tests/project-test/webpack.config.js', // used to resolve module aliases
specifiers: false // if true, it will populate the specifiers imported by the dependency
}
}
// see the corresponding JSON format example
depsReport.findDependencies(["tests/project-test/a.js"], optionsFindDependencies)
// find-dependents command options
let optionsFindDependents = {
root: 'tests/project-test', // Root folder from where to start the search of dependents
circular: false, // if true, it will try to see if there are some circular dependencies with input files
onlyCircular: false, // if true, it will return only dependents with circular dependency with input files
onlyNotFound: false, // if true, it will return all modules that no one is depending on
hideNotFound: false, // used only for CLI output
parent: {
excludeNodeModules: false, // if true, it will exclude all node modules
json: false, // used only for CLI output
pretty: false, // used only for CLI output
absPath: false, // used only for CLI output
color: false, // used only for CLI output
webpackConfig: 'tests/project-test/webpack.config.js', // used to resolve module aliases
specifiers: false // if true, it will populate the specifiers imported by the dependent
}
}
// see the corresponding JSON format example
depsReport.findDependents(["tests/project-test/src/templates/*.js", "tests/project-test/src/utilities/*.js"], optionsFindDependents)
Support
Feature request/enhancement
For feature requests/enhancement, create an issue!
License
MIT License