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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@cle-does-things/jake

v0.5.0

Published

A Rust-native implementation of the RAG stack

Readme

jake

jake (crasis for "just make") is a Make-like task executor for Unix-based operating systems.

It is based on TOML tasks definition (stored in a file called jakefile.toml) and can execute commands resolving their dependencies and passing additional options.

Features

  • Create a boilerplate jakefile.toml file with jake --init 'task1,task2,...'
  • Simple TOML syntax for task definition (no .PHONY, no spacing rules)
  • Dependency resolution with circular dependencies issues detection
  • Allows to pass extra arguments (as options) from the command line
  • Default command execution
  • Evaluates composite commands (like cat README.md | grep Features or cd src/ && pwd)
  • You can execute a task from any subdirectory of the directory where jakefile.toml is stored
  • You can list tasks, by passing the --list flag
  • You can load .env file (in the same working directory or anywhere up in the directory tree), by passing the --env flag

Installation

With cargo (recommended):

cargo install jake

With npm:

npm install -g @cle-does-things/jake@latest

Example jakefile.toml

Here is an example for task definition:

default = { command = "cat README.md" }
say-hello = "echo 'hello'"
say-hello-back = { command = "echo 'hello back'" }
say-bye = { command = "echo 'bye'", depends_on = ["say-hello", "say-hello-back"] }
list = "ls"
env-variable = "echo $HELLO"

And here is the anatomy of a definition:

say-bye = { command = "echo 'bye'", depends_on = ["say-hello", "say-hello-back"] }
   |                |                            |
Task name    Command to execute    Array of tasks to be executed _before_
                                               the task itself

While depends_on is optional (if not provided, the task does not depend on anything), command is a required key if the provided TOML value is an object (as for say-hello-back, default and say-bye).

In cases where the command does not depend on anything, you can also provide it as a plain string (as for say-hello and list).

You can use the default task name to indicate the task that should be executed by default when none is provided to jake (otherwise, the default task will be the first one in the file).

Example Usage

Create a boilerplate jakefile.toml:

jake --init 'task1,task2' # tasks need to be provided as a comma-separated list

Output (as jakefile.toml in the current working directory):

task1 = "echo 'No task yet for task1'"
task2 = "echo 'No task yet for task2'"

Execute default task:

jake

Output:

# jake

`jake` (crasis for "just make") is a [Make](https://en.wikipedia.org/wiki/Make_(software))-like task executor for Unix-based operating systems.

...

Execute a task that does not depend on anything:

jake say-hello

Output:

'hello'

Execute a task that depends on other tasks:

jake say-bye

Output:

'hello'
'hello back'
'bye'

Execute a task passing additional flags:

jake list --options "-la"

Output:

total 48
drwxr-xr-x@  10 clee  staff   320 Feb 13 11:14 .
drwxr-xr-x@ 125 clee  staff  4000 Feb 13 10:20 ..
drwxr-xr-x@   9 clee  staff   288 Feb 13 10:20 .git
-rw-r--r--@   1 clee  staff     8 Feb 13 10:20 .gitignore
-rw-r--r--@   1 clee  staff  7656 Feb 13 11:13 Cargo.lock
-rw-r--r--@   1 clee  staff   162 Feb 13 11:13 Cargo.toml
-rw-r--r--@   1 clee  staff   332 Feb 13 11:21 jakefile.toml
-rw-r--r--@   1 clee  staff   152 Feb 13 11:16 README.md
drwxr-xr-x@   4 clee  staff   128 Feb 13 10:22 src
drwxr-xr-x@   6 clee  staff   192 Feb 13 10:22 target

List all tasks:

jake --list

Output:

Available tasks:
- default
- say-hello
- say-hello-back
...

Run a task that requires an environment variable by loading a .env file:

echo "HELLO=hello" >> .env
jake env-var --env

Output:

hello

In GitHub CI/CD

You can use the setup-jake action to set up jake and use it in your GitHub Actions workflows.

License

This project is provided under MIT license.