# @johnls/easy

> A tool to make package project management easy!

Latest version **4.5.1** (published 2021-02-18) · MIT license · 0 weekly downloads

## Install

```sh
npm install @johnls/easy
pnpm add @johnls/easy
yarn add @johnls/easy
bun add @johnls/easy
```

Provides the command `easy`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 4.5.1 |
| Published | 2021-02-18 |
| First published | 2019-02-14 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 8 |
| Unpacked size | 65.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Author | John Lyon-Smith |
| Maintainers | jlyonsmith |
| Keywords | package, project, build, release, test, start |

## Links

- npm: https://www.npmjs.com/package/@johnls/easy
- Repository: https://github.com/jlyonsmith/easy
- Homepage: https://github.com/jlyonsmith/easy#readme
- Issues: https://github.com/jlyonsmith/easy/issues
- npm.io page: https://npm.io/package/@johnls/easy

## Dependencies (8)

- [glob](https://npm.io/package/glob.md) ^7.1.6
- [chalk](https://npm.io/package/chalk.md) ^3.0.0
- [fs-extra](https://npm.io/package/fs-extra.md) ^9.0.0
- [minimist](https://npm.io/package/minimist.md) ^1.2.5
- [toposort](https://npm.io/package/toposort.md) ^2.0.2
- [tmp-promise](https://npm.io/package/tmp-promise.md) ^2.0.2
- [readline-sync](https://npm.io/package/readline-sync.md) ^1.4.10
- [command-exists](https://npm.io/package/command-exists.md) ^1.2.8

## Alternatives

- [duck](https://npm.io/package/duck.md) — 4.2M weekly downloads
- [ava](https://npm.io/package/ava.md) — 560.2K weekly downloads
- [storybook-addon-module-mock](https://npm.io/package/storybook-addon-module-mock.md) — 71.7K weekly downloads
- [vest](https://npm.io/package/vest.md) — 50.1K weekly downloads
- [@ethereum-waffle/mock-contract](https://npm.io/package/@ethereum-waffle/mock-contract.md) — 40.0K weekly downloads

## Recent versions

- 4.5.1 (latest) — 2021-02-18
- 4.5.0 — 2021-02-11
- 4.4.3 — 2020-03-20
- 4.4.2 — 2020-03-18
- 4.4.1 — 2019-09-11
- 4.4.0 — 2019-09-11
- 4.3.1 — 2019-08-10
- 4.2.2 — 2019-04-23
- 4.2.1 — 2019-03-11
- 4.2.0 — 2019-03-11
- 4.1.1 — 2019-02-19
- 4.1.0 — 2019-02-17
- 4.0.0 — 2019-02-14

## README

# Easy: Node Build & Release Tool

[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)

A tool that makes building, testing, starting, deploying and releasing multi-package NodeJS projects **easy**!

`easy` is an opinionated tool for managing a NodeJS project tree. It assumes your development environment uses:

- [npm](http://npmjs.org) as the [NodeJS](http://nodejs.org) package manager
- [git](https://git-scm.com/) to manage your source code
- If on macOS, [iTerm2](https://www.iterm2.com/) as a scriptable replacement for the macOS Terminal app
- [stampver](https://www.npmjs.com/package/stampver) to manage your [semantic versioning](https://semver.org/)
- An `actor` naming convention for node sub-processes.

If you don't use all of the above, then `easy` is probably not going to be that helpful too you. Told you it was opinionated!

## Installation

Install the package globally or use `npx` to run the latest version:

```sh
npm install -g @johnls/easy
easy --help
```

or:

```sh
npx @johnls/easy --help
```

## Build

To build all projects recursively use:

```sh
easy build
```

You can also specify `--install` and `--clean` with this command.

## Install

To install all `npm` packages recursively use:

```sh
easy install
```

If you specify `--clean` it will perform the `clean` command before installation.

## Clean

To recursively clean out all `node_modules`, `dist`, `build` and `package-lock.json` files use:

```sh
easy clean
```

## Test

To run all tests recursively use:

```sh
easy test
```

Each command will search recursively through your project tree looking for `package.json` files to process. They each ignore `node_modules` directories.

## Start

It's common to have a NodeJS based product comprised of a website, a server and perhaps mobile apps. `easy` will run all the `start` scripts recursively with:

```sh
easy start
```

Easy is also intended to be used with NodeJS servers consisting of multiple _actor_ services (or node sub-processes.) These actors processes have `script` names that start with `actor:`.

```sh
easy start --actors
```

If `easy` finds `actor:` entries, it will start each actor process using a new iTerm2 tab in the same window so that you can shut down your entire product with one click. For that `package.json` it will not run the `start` script. Very handy for local testing.

## Release

The `release` command is used to create a new tested and tagged release in Git.

The tool uses `stampver` to update version information for the build. Just tell it which part of the version to update with `patch`, `minor` or `major`.

If you add the `--deploy` it will run `npm run deploy` to run the `deploy` script. This can be whatever you want. For example, publishing to `npm` it would be done with `npm publish`. For provisioning using Ansible, it might run `ansible-playbook`.

## Deploy

The `deploy` command just runs `npm run deploy`. Simple.

## Rollback

To quickly rollback the current `HEAD` of all branches to the tag prior to the current tag.

---
_Source: https://npm.io/package/@johnls/easy · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
