Skip to content
Generate reports about dependencies and dependents of your JavaScript/TypeScript files through an AST. It supports import and require statements.
Branch: master
Clone or download
pichillilorenzo Merge pull request #7 from pichillilorenzo/greenkeeper/flow-parser-0.…
…76.0

Update flow-parser to the latest version 🚀
Latest commit c02513d Jul 6, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
flow-typed/deps-report
lib
tests
.coveralls.yml
.flowconfig
.gitignore
.travis.yml
LICENSE
README.md
greenkeeper.json
package.json

README.md

deps-report

node version npm downloads deps-report version Travis Coverage Status license Greenkeeper badge Donate to this project using Paypal Donate to this project using Patreon

Generate reports about dependencies and dependents of your JavaScript/TypeScript files through an AST. It supports import and require statements.

Parsers used:

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!

paypal Become a Patron

License

MIT License

You can’t perform that action at this time.