1.1.1 • Published 4 years ago

@beemo/dependency-graph v1.1.1

Weekly downloads
1,148
License
MIT
Repository
github
Last release
4 years ago

Dependency Graph

Build Status npm version npm deps

Generate a dependency graph for a list of packages, based on their defined dependencies and peerDependencies.

Installation

yarn add @beemo/dependency-graph
// Or
npm install @beemo/dependency-graph --save

Documentation

To begin, instantiate an instance of Graph, which accepts a list of optional package.json objects as the first argument.

import Graph from '@beemo/dependency-graph';

const graph = new Graph([
  {
    name: '@beemo/core',
  },
  {
    name: '@beemo/cli',
    dependencies: {
      '@beemo/core': '^1.0.0',
    },
  },
]);

Alternatively, package.json objects can be added dynamically using Graph#addPackage or Graph#addPackages.

graph.addPackage({
  name: '@beemo/driver-jest',
  peerDependencies: {
    '@beemo/core': '^1.0.0',
    '@beemo/driver-babel': '^1.0.0',
  },
});

Once all packages have been defined, we can generate a graph using these Graph methods:

  • resolveList - Returns an array of packages in order of most depended on.
  • resolveBatchList - Like the previous, but returns the array batched based on depth.
  • resolveTree - Returns a tree of nodes based on the graph.
// List of packages
graph.resolveList().forEach((pkg) => {
  console.log(pkg.name);
});

// List of list of packages
graph.resolveBatchList().forEach((pkgs) => {
  pkgs.forEach((pkg) => {
    console.log(pkg.name);
  });
});

// Tree of nodes
graph.resolveTree().nodes.forEach((node) => {
  console.log(node.package.name);

  if (node.nodes) {
    // Dependents
  }
});

Will only resolve and return packages that have been defined. Will not return non-defined packages found in dependencies and peerDependencies.