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

fark

v1.1.7

Published

A command line tool to work with the mess that is your projects folder.

Downloads

4

Readme

fark

A command line tool to work with the mess that is your projects folder.

You would fark by typing in your terminal, for example:

# Lists all your projects
/home/wvbe/projects> fark

# Lists all projects that have uncommitted changes
/home/wvbe/projects> fark -f status:dirty

# Pull-rebase all projects that have a clean git state
/home/wvbe/projects> fark -f status:clean -$ git pull -r

# Create an npm package out of every project that isn't already
/home/wvbe/projects> fark -f ~has-file:package.json -$ npm init --yes

The power of fark lies in combining small easy to use filters (-f) with column output (-c) or a shell command you want to repeat over the results (-$, --run).

  • Filters narrow down the scope of projects that are logged back to you, or used for --run.
  • Columns simply log more stuff in an invention called "table".
  • Run a command to gain additional skill points in crafting unicorn blockchain hacks. Use responsibly.

Output of fark could be something like:

/home/wvbe/projects> fark --filters is-npm --columns name npm-prop:version is-git status is-git-ahead
╔══════════════╤═════════════╤════════╤════════╤══════════════╗
║ name         │ npm-prop    │ is-git │ status │ is-git-ahead ║
╟──────────────┼─────────────┼────────┼────────┼──────────────╢
║ ask-nicely   │ 3.0.1       │ yes    │        │ no           ║
║ fark         │ 1.0.2       │ yes    │ M      │ no           ║
║ luggage      │ 1.0.0       │ yes    │        │ no           ║
║ oxee         │ 4.0.0-alpha │ yes    │ UDM    │ no           ║
║ poseidon     │ 0.1.0       │ yes    │        │ no           ║
║ react-world  │ 0.1.0       │ yes    │ UDM    │ no           ║
║ wyb.be       │ 0.1.0       │ yes    │ UDM    │ no           ║
║ xml-renderer │ 1.2.0       │ yes    │ UADM   │ no           ║
╟──────────────┼─────────────┼────────┼────────┼──────────────╢
║ name         │ npm-prop    │ is-git │ status │ is-git-ahead ║
╚══════════════╧═════════════╧════════╧════════╧══════════════╝

Directories:  8
Filters:      is-npm
Props:        name, npm-prop, is-git, status, is-git-ahead
Time:         217ms

# If you use --run, the execution results for each project listed above are shown here

Install

npm install fark -g

Extending

Building an Informer is pretty easy, see any of the informers in the api/ directory. You can make fark load additional informers by creating a directory .fark in your home folder, and in it a file called myInformer.js (or something that matches *Informer.js). Feel free to npm install additional stuff that you need.

Help

Type fark -h in your terminal to get the following summary of options, columns and filters you have available. If you have any custom informers, they will be included too. An installation of fark that is not extended includes the the following:

Options

| short | long | description | required | |-------|--------------|---------------------------------------------------------------------------------------------------------------------------------|----------| | -c | --columns | Additional properties to show for each directory, see also the available Columns. | no | | -C | --concurrent | The amount of execution tasks to perform concurrently | no | | -f | --filters | Show only results that match all given Filters. Use "~" to invert the filter response, and ":" for additional filter arguments. | no | | -g | --glob | Globbing pattern(s) for finding your projects. Defaults to "*". | no | | -h | --help | Shows you this help page | no | | -W | --nowrap | Do not stretch or shrink the results table to terminal width | no | | -$ | --run | Run this command in every result directory | no | | -s | --sort | Sort on this column. Use the negation character ("~") to inversely sort. Defaults to the first column. | no | | -v | --version | Gives the fark version | no |

Columns

| name | description | |-------------------|-------------------------------------------------------------------------------------------------------| | accessed | The last time this file was accessed | | changed | The last time the file status was changed | | git-branch | The branch name that is currently checked out | | git-remote-names | The names of repository git remotes | | git-remote-url | The URL of a specific git remote | | git-remote-urls | The URLs of repository git remotes | | has-addition | Wether the repository has any, or a file $1 marked as addition | | has-branch | Assert wether $1 is a branch on the local machine or any of the remotes | | has-deletion | Wether the repository has any, or a file $1 marked as deletion | | has-file | Assert wether file $1 exists | | has-local-branch | Assert wether $1 is a branch on the local machine | | has-modification | Wether the repository has any, or a file $1 marked as modification | | has-npm-keyword | The package has been labelled with keyword $1 | | has-npm-script | The package has an npm script called $1 | | has-remote-branch | Assert wether $1 is a branch on any of the remotes, or on remote $2 if the second argument is used. | | has-unstaged | Wether the repository has any, or a file $1 marked as unstaged | | is-git | This is a git versioned repository | | is-git-ahead | The repository has a commit that has not been pushed to remote. | | is-git-behind | The remote has a commit that has not been pulled. | | is-link | Symbolic link, or no | | is-npm | This is an npm package | | is-npm-private | Is this a private package | | modified | The last time this file was modified | | name | The directory name | | name-ends-with | Only repositories whose directory ends with $1 | | name-starts-with | Only repositories whose directory starts with $1 | | npm-prop | Property $1 of package.json | | path | The full path to repo | | path-contains | Only repositories whose full path contains $1 | | remote-status | The number of commits ahead and behind on the tracked remote branch | | status | Clean status, or any combination of (U) unstaged, (A) additions, (M) modifications and (D) deletions. |

Filters

| name | description | |-------------------|-----------------------------------------------------------------------------------------------------| | has-addition | Wether the repository has any, or a file $1 marked as addition | | has-branch | Assert wether $1 is a branch on the local machine or any of the remotes | | has-deletion | Wether the repository has any, or a file $1 marked as deletion | | has-file | Assert wether file $1 exists | | has-local-branch | Assert wether $1 is a branch on the local machine | | has-modification | Wether the repository has any, or a file $1 marked as modification | | has-npm-keyword | The package has been labelled with keyword $1 | | has-npm-script | The package has an npm script called $1 | | has-remote-branch | Assert wether $1 is a branch on any of the remotes, or on remote $2 if the second argument is used. | | has-unstaged | Wether the repository has any, or a file $1 marked as unstaged | | is-git | This is a git versioned repository | | is-git-ahead | The repository has a commit that has not been pushed to remote. | | is-git-behind | The remote has a commit that has not been pulled. | | is-link | Symbolic link, or no | | is-npm | This is an npm package | | is-npm-private | Is this a private package | | name-ends-with | Only repositories whose directory ends with $1 | | name-starts-with | Only repositories whose directory starts with $1 | | path-contains | Only repositories whose full path contains $1 | | status | filter by clean, dirty, or any combination of U (unstaged), A (added), M (modded) or D (deleted) |