npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

dependency-walker

v0.4.0

Published

Use dependency statements in files for topological dependency sorting. Dependency statement name can be Statement name can be customised.

Downloads

5

Readme

Usage

3 JavaScript files with dependencies:

src/main.js

depends('A.js');

lib/A.js

depends('B.js');

lib/B.js

console.log('this is B.js');

lib/C.js

console.log('this is isolated C.js');

The code to resolve the dependencies:

var DepWalker = require('dependency-walker');

// use main.js as entry point,
// 2 source directories,
// and 'depends' as the dependency statement.
var walker = new DepWalker({
  main: 'main.js',
  directories: ['src', 'lib'],
  statement: 'depends'
});

// return the sorted dependencies of main.js:
// lib/B.js, lib/A.js, src/main.js
console.log(walker.walk());

Dependency with an entry point

Note that lib/C.js is not in the list. It is because from the entry point main.js, the dependency graph of main.js, A.js and B.js, does not contains C.js.

This is useful when you building a final application, non-related files are removed to save space.

Dependency without an entry point

If NO entry point is supplied, lib/C.js will be included in the sorted list. Since it will retrieve and sort all the files in src and lib. The isolated files will be also included.

This is typically useful when building a library. So every files in the library could be used by other application.

Options

directory

The directories to be searched for.

pattern

A pattern matching string, using glob. Default to: **/*.js, all JavaScript files.

main

The entry point for calculating dependency graph. Differences between with and without supplying entry point is listed above.

statement

The dependency statement. By default is require. Dependency walker will extract this statement and its parameters in order to find out the file's dependencies.