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

cousteau

v1.0.14

Published

Recursive directory walker that retrieves all dir/file paths along with their stats and follows symlinks.

Downloads

6

Readme

NPM version Build Status downloads per month Coverage Status

cousteau


Recursive directory walker that retrieves all dir/file paths along with their stats and follows symlinks.

Features

  • Traverses recursively and asynchronously all sub-directories.
  • Can ignore artifacts via filtering mechanism based on CousteauStats properties.
  • Properly resolves and follows symlinks. (filtering in symlinks is applied based on the original target artifact)
  • Reports broken symlinks.

Install

$ npm install cousteau

API

The function accepts three arguments

cousteau(path, [ignoreOptions], callback)

  • path - The target directory path
  • ingoreOptions - Optional filtering option
  • callback - The callback gets two arguments (errors, result) where result is an object with below structure
   // Result object
   {
       dirs: [CousteauStats],
       files: [CousteauStats],
       brokenSymlinks: [String],
   }

CousteauStats

Is an fs.Stats instance extended with the path property.

For example:


    {
      path string
      dev number
      mode number
      nlink number
      uid number
      gid number
      rdev number
      blksize number
      ino number
      size number
      blocks number
      atime Date object
      mtime Date object
      ctime Date object
      
      isFile function
      isDirectory function
      isBlockDevice function
      isCharacterDevice function
      isSymbolicLink function
      isFIFO function
      isSocket function
    }

The ignoreOptions can be applied to one or more of the CousteauStats properties either on the directories and/or the files.

Example


const cousteau = require("cousteau");

// Without filtering
cousteau("aPath", (errors, result) => {
    console.log(errors, result);
});

// Find all png files that their size is more than 1500 bytes
// and are children of directories that contain the "zilla" substring in their name

const ignoreOptions = {
    dir: {
        path: (p) => !p.includes("zilla"),
    },
    file: {
        path: (p) => !(/.*\.png$/i).test(p),
        size: (s) => s <= 1500,
    },
};

cousteau("aPath", ignoreOptions, (errors, result) => {
    console.log(errors, result);
});

Test

$ npm test

Note that in order to run the tests you need NodeJS version >= 6

License

Copyright (c) 2017 Ioannis Tzanellis Released under the MIT license