UNPKG

get-es-imports-exports

Version:

Recursively get imports and exports for files using ES import/export syntax

114 lines (84 loc) 2.74 kB
# get-es-imports-exports Recursively or non-recursively gets all ES6 imports and exports used within a project. E.g. ```js // a.js import b from './b'; export b; ... ``` ```js // b.js export * from './c'; ... ``` ```js // c.js import { find } from 'lodash'; export { find }; ... ``` Returns an object in the form: ```js { imports: { 'full path of ./b': ['default'], 'full path of ./c': ['*'], 'full path of lodash': ['find'], }, exports: { 'full path of ./a': ['default'], 'full path of ./b': ['*'], 'full path of ./c': ['find'], } } ``` # API ```js import getEsImportsExports from 'get-es-imports-exports'; const { imports, exports, loadedFiles, stats } = await getEsImportsExports({ files = [], recurse = true, exclude = [], parser = defaultParser, parserOptions = defaultParserOptions, resolveOptions = {}, }); ``` `files` is an array of paths for JS files you want to check. The `recurse` option will recursively look at the files imported to find more imports. Will not recurse and look for dependencies within node_modules, but imports to these files are still recorded. The `exclude` option is an array of file globs for files you don't want to check when recursing. As with node_modules, imports to these files are still reported. The `parser` and `parserOptions` options are identical to [ESLint](http://eslint.org/docs/user-guide/configuring#specifying-parser). By default, it will supports ES6 modules and JSX. The `resolveOptions` is passed to [resolve](https://github.com/substack/node-resolve) to resolve imports. ## Return values `imports` is a map of absolute file path to an array of imports. Named imports are left as-is, default imports are reported as `'default'`, and namespace imports are reported as `'*'`. I.e. ```js import { a } from './a'; // 'a' import { a as b } from './a'; // 'a' import a from './a'; // 'default' import * as a from './a'; // '*' ``` Note that exports can also report as an import. ```js export * from 'lodash'; // equates to import * from 'lodash' ``` `exports` is also a map of absolute filepath to an array, but this time, exports. As before, the same naming convention is used. ```js export const five = 5; // 'five' export { five as FIVE } // 'FIVE' export default 5; // 'default' export * from './a'; // '*' ``` `loadedFiles` is the files that were loaded and checked. `stats` is an array of warnings. Currently the only warning is if a file failed to parse, and had an extension that wasn't .js (which would otherwise throw). The default parser and default parser options are exported for your convenience. # Tips To use `babel-eslint`, use, ```js getEsImportsExports({ ... parser: 'babel-eslint', ... }) ```