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 🙏

© 2025 – Pkg Stats / Ryan Hefner

scripteasy

v0.0.5

Published

The easy script runner

Downloads

12

Readme

scripteasy

npm (scoped) Docs Status

The easy script runner

Where?

npm i scripteasy

What?

scripteasy is an easy way to write and run npm scripts. Scripts can be housed in the package.json or a separate JS/JSON or YAML file (and then specified in the package.json).

Why?

Sometimes a full blown task runner (Gulp, taskr, et al) is more than a project calls for. While they can provide fast and powerful tools, the overhead and dependency limitations can sometimes make them undesireable. Npm scripts can serve as a quick and dirty, and (due to the power of shell scripting) surpisingly capable tool. However, npm scripts can get ugly (linebreak much?), they need special care to call themselves cross platform compatible (particularly when dealing with env vars), and they have no simple approach to manage control flow.

The goal of scripteasy is to bring the flexibility and portability of a fully fledged task runner into the world of npm scripts and make scripting itself more intuitive and, dare we say it, fun!

How?

Like JSON?

Then add your scripts directly to your package.json,

{
  "scripteasy": {
    "build": [ "test", "docs" ],
    "precommit": {
      "try": [
        "git stash save --keep-index -q \"precommit stash\"",
        "build",
        "git add docs"
      ],
      "catch": "echo \"something went wrong!\"",
      "finally": [
        "git stash pop --index -q",
        "echo \"All done!\""
      ]
    },
    "test": "nyc mocha",
    "docs": "esdoc"
  }
}

or create a separate JSON file and reference it in your package.json.

{
  "scripteasy": "scripts.json"
}

Like JS?

Then create an external JS file,

exports.build = [ 'test', 'docs' ];

exports.precommit = {
  try: [
    'git stash save --keep-index -q "precommit stash"',
    'build',
    'git add docs',
  ],
  catch: 'echo "something went wrong!"',
  finally: [
    'git stash pop --index -q',
    'echo "All done!"',
  ],
};

exports.test = 'nyc mocha';

exports.docs = 'esdoc';

and add that to your package.json.

{
  "scripteasy": "scripts.js"
}

Like YAML?

Then (I think you know where this is going) create an external YAML file

build:
  - test
  - docs

precommit:
  try:
    - git stash save --keep-index -q "precommit stash"
    - build
    - git add docs
  catch: echo "something went wrong!"
  finally:
    - git stash pop --index -q
    - echo "All done!"

test: nyc mocha

docs: esdoc

If it is possible to cut a word out, always cut it out. -- George Orwell

... yada yada yada, package.json

{
  "scripteasy": "scripts.yml"
}

Like actually running your scripts?

Try the CLI

ez build
ez test docs

Take a look at a hook

{
  "scripts": {
    "precommit": "ez precommit"
  }
}

Psst!

Wanna know a secret?

Specify your env vars as a property.

{
  "scripteasy": {
    "sayyes": {
      "try": "echo \"$YES\"",
      "env": { "YES": "If you say so" }
    }
  }
}
$ ez sayyes
> If you say so
$ YES=no ez sayyes
> no

Who?

You?

When?

Why not now?