# @beemo/dependency-graph

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

Latest version **1.1.1** (published 2020-04-22) · MIT license · 0 weekly downloads

## Install

```sh
npm install @beemo/dependency-graph
pnpm add @beemo/dependency-graph
yarn add @beemo/dependency-graph
bun add @beemo/dependency-graph
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.1 |
| Published | 2020-04-22 |
| First published | 2019-03-11 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=8.9.0 |
| Dependencies | 0 |
| Unpacked size | 18.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 142 |
| Author | Miles Johnson |
| Maintainers | beemo-admin, milesj |
| Keywords | beemo, dependency, graph |

## Links

- npm: https://www.npmjs.com/package/@beemo/dependency-graph
- Repository: https://github.com/beemojs/beemo/tree/master/packages/driver-babel
- npm.io page: https://npm.io/package/@beemo/dependency-graph

## Alternatives

- [apollo-link-http-common](https://npm.io/package/apollo-link-http-common.md) — 879.0K weekly downloads
- [react-relay](https://npm.io/package/react-relay.md) — 336.8K weekly downloads
- [relay-test-utils](https://npm.io/package/relay-test-utils.md) — 181.6K weekly downloads
- [@vendure/core](https://npm.io/package/@vendure/core.md) — 14.8K weekly downloads
- [@pnpm/deps.graph-sequencer](https://npm.io/package/@pnpm/deps.graph-sequencer.md) — 13.4K weekly downloads

## Recent versions

- 1.1.1 (latest) — 2020-04-22
- 1.1.0 — 2020-02-10
- 1.0.1 — 2019-07-06
- 1.0.0 — 2019-05-18
- 1.0.0-alpha.1 — 2019-03-31
- 1.0.0-alpha.0 — 2019-03-11

## README

# Dependency Graph

[![Build Status](https://github.com/beemojs/beemo/workflows/Build/badge.svg)](https://github.com/beemojs/beemo/actions?query=branch%3Amaster)
[![npm version](https://badge.fury.io/js/%40beemo%2Fdependency-graph.svg)](https://www.npmjs.com/package/@beemo/dependency-graph)
[![npm deps](https://david-dm.org/beemojs/beemo.svg?path=packages/dependency-graph)](https://www.npmjs.com/package/@beemo/dependency-graph)

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.

```ts
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`.

```ts
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.

```ts
// 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`.

---
_Source: https://npm.io/package/@beemo/dependency-graph · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
