@canva/dependency-tree
TypeScript icon, indicating that this package has built-in type declarations

3.3.3 • Public • Published

@canva/dependency-tree

build npm

This package can create a dependency tree from a given set of files/folders. The nodes of the tree are files and the edges are file -> file dependencies. The most common way to express such a dependency between two files is some sort of import statement (require(), import ... from, @import) or a directive.

It provides an extensible API for file processors to generate this dependency tree and comes with a few of them out of the box:

It has support for custom resolvers using enhanced-resolve and dynamic reference transformation. It has built-in file caching and test coverage is ~80%+.

Usage

const dependencyTree = new DependencyTree(['/path/to/my/dir']);
const {
  missing, // a map from files in any of the given root directories to their (missing) dependencies
  resolved, // a map from files in any of the given root directories to their dependencies
} = await dependencyTree.gather();

// we can now get set of (transitive) references to a file
const directOrTransitiveReferences = DependencyTree.getReferences(resolved, [
  '/path/to/my/dir/file.ts',
]);

// or we can get the set of (transitive) dependencies of a file
const directOrTransitiveDependencies = DependencyTree.getDependencies(
  resolved,
  ['/path/to/my/dir/file.ts'],
);

Use cases

  • Visualisation of (epxlicit and implicit) in-code dependencies
  • Identifying build targets that need to be regenerated based on affected code

Releasing

  • Bump the version of package.json to a meaningful version for the changes since the last release (we follow semver).
  • To do a dry-run of the release and what would go out in the package you can manually execute the npm-publish workflow on the main branch. It will do a dry-run publish (not actually publish the new version).
  • Draft a new release in the github project - please use a tag named vX.X.X (where X.X.X is the new to-be-releases semver of the package - please add as many detail as possible to the release description.
  • Once you're ready, Publish the release. Publishing will trigger the npm-publish workflow on the tag and do the actual publish to npm.

Dependencies (15)

Dev Dependencies (18)

Package Sidebar

Install

npm i @canva/dependency-tree

Weekly Downloads

1,552

Version

3.3.3

License

MIT

Unpacked Size

65.8 kB

Total Files

19

Last publish

Collaborators

  • canva-opensource
  • canva-dev