detect-dep

Detect the dependencies by walking AST

Usage no npm install needed!

<script type="module">
  import detectDep from 'https://cdn.skypack.dev/detect-dep';
</script>

README

detect-dep

Build status Test coverage NPM version NPM Downloads Prettier Conventional Commits

Detect the dependencies by walking AST

Support detecting dynamic import and require.context

Installation

npm install detect-dep
# or use yarn
yarn add detect-dep

Usage

Package

import { detectDep } from 'detect-dep'
const dependencies = detectDep('some code' /* opts */)

Cli

npm i detect-dep -g
detect-dep --help
detect-dep --version

API

AST

lib/index.js:101-103

Type: Object

detectDep

lib/index.js:101-103

Parameters

  • source {String|AST}
  • options {Object}
    • options.esModule {Boolean} Disable esExport esImport dynamicImport when is falsy (optional, default true)
    • options.requireEnsure {Boolean} whether detecting require.ensure(['./a', 'b']) or not (optional, default true)
    • options.requireContext {Boolean} whether detecting require.context('./root', false, /\.jsx?$/) or not (optional, default true)
    • options.dynamicImport {Boolean} whether detecting import('./foo') import('./foo/' + name) or not (optional, default true)
    • options.esExport {Boolean} whether detecting export xx from 'xxx' or not (optional, default true)
    • options.esImport {Boolean} whether detecting import ... or not (optional, default true)
    • options.requireImport {Boolean} whether detecting require('...') or not (optional, default true)
    • options.localImport {Boolean} whether requiring require('./local/path') or not (optional, default true)
    • options.moduleImport {Boolean} whether requiring require('path') or not (optional, default true)
    • options.extensions {string[]} Which file with matching extension should be detected recursively (optional, default ['.js','.jsx'])
    • options.resolveExtensions {string[]} The resolved path's extensions which are allowed (would be extends options.extensions) (optional, default Object.keys(require.extensions))
    • options.from {String} where is the source come from (filename) (optional, default '')
    • options.recursive {boolean} Detecting the source recursively. (optional, default true)
    • options.resolver {(source, options) => string[]} The core method for resolving dependencies. (optional, default require('./resolver'))
    • options.returnAbsolutePath {boolean} whether returning the local module's absolute path, or use real module id instead. (optional, default true)

Examples

const { detectDep } = require('detect-dep')
const dependencies = detectDep('some code', {})

Returns any dependencies {String[]} - dependencies list

Module

lib/index.js:204-222

Type: Object

tree

lib/index.js:204-222

Parameters

  • path {string}
  • options See detectDep (optional, default {})

Examples

const {tree} = require('detect-dep')
const moduleTree = tree('/path/to/file')

{
  id: '/path/to/file',
  children: [
    {
      id: '/path/to/file/b.jsx',
      children: []
    }
  ]
}

Returns Module

Contributing

  • Fork it!
  • Create your new branch:
    git checkout -b feature-new or git checkout -b fix-which-bug
  • Start your magic work now
  • Make sure npm test passes
  • Commit your changes:
    git commit -am 'feat: some description (close #123)' or git commit -am 'fix: some description (fix #123)'
  • Push to the branch: git push
  • Submit a pull request :)

Authors

This library is written and maintained by imcuttle, moyuyc95@gmail.com.

License

MIT - imcuttle 🐟