Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

ultra-runner

folke54.8kMIT3.10.5TypeScript support: included

Smart and beautiful script runner that hijacks any npm run, yarn and npx calls for ultra fast execution

cli, command-line, concurrent, concurrently, execution, fast, npm, parallel, run, runner, scripts, terminal, yarn, lerna, pnpm, monorepo, build

readme

:runner: :mountain: Ultra Runner

github badge Coverage Status npm GitHub GitHub top language Renovate

Ultra fast monorepo script runner and build tool.

:sparkles: Features

  • zero-config: works out of the box with your existing monorepo
  • non-intrusive: no need to make any changes to your packages.json files
  • workspaces: detects packages in existing lerna, yarn, npm@7 and pnpm workspaces, or recursively searches them
  • ultra fast builds: ultra keeps track of file changes in your repo and only actually build a package when needed
  • parallel builds: ultra builds your packages concurrently by default
  • workspace dependencies: workspace dependencies are automatically resolved and used for parallel builds
  • execute anything: one command to run package scripts, node_modules binaries or system binaries, recursively in your repository.
  • faster script execution: ultra hijacks any npm, pnpm, yarn and npx calls for faster execution.
  • concurrency within scripts: you can add optional configuration to package.json to run parts of a script in parallel. No need to change the actual scripts
  • filtering: filter on package names or subdirectories
  • monitoring: node process monitor (like top for node)
  • output zooming when executing multiple commands in parallel, ultra will try to keep as much concurrent output on the screen as possible, by only showing the last lines of the commands. Once the commands complete running, a full log is written to the terminal. This is very useful when building a bunch of packages with --watch for instance.
  • missing scripts when executing scripts recursively, only packages that have the script defined, will execute it.

🎥 View Demo

Workspaces

:nerd_face: Smart

Ultra parses your package.json and hijacks any npm run, yarn and npx calls. Shell operators like &&, ; and || are also interpreted.

For example:

{
  "scripts": {
    "lint": "yarn lint:ts && yarn lint:eslint && yarn lint:docs",
    "lint:eslint": "npx eslint bin/*.js src/*.ts __tests__/*.ts --cache",
    "lint:docs": "npx markdownlint README.md",
    "lint:ts": "npx tsc -p tsconfig.build.json --noEmit",
    "lint:fix": "yarn lint:eslint --fix"
  }
}

Running ultra lint Ultra Lint

Running ultra lint:fix will spawn exactly one child process, directly with the correct command, instead of spawning yarn intermediately

Ultra will additionally execute any configured pre and post scripts, just like npm run and yarn run.

:palm_tree: Recursive Execution

When using -r or --recursive, the command will be executed in every package of your repository, excluding the root package. If you also want to run in the root package, combine --recursive with --root. Commands are always run concurrently with a default concurrency of 10 (can be changed with --concurrency)

Ultra finds packages based on your monorepo workspace:

  • lerna
  • pnpm
  • yarn workspace
  • when no monorepo manager was found, we look recursively for packages

Use --filter <filter> to filter packages in the workspace. The filter argument can use wildcards to filter package names and/or subdirectories:

$ ultra -r --filter "@scope/app" pwd
...

$ ultra -r --filter "@scope/*" pwd
...

$ ultra -r --filter "apps/*" pwd
...

When the filter is prefixed with a +, then all dependencies of the filtered packages will also be included. For example, let's say you have a package "app1" that depends on "lib1", then using the filter +app1, will execute the command on both app1 and lib1, using the workspace topology.

:package: Builds

Ultra automatically detects workspace dependencies, while still allowing parallel builds. Packages are build concurrently as soon as their dependencies are build (also concurrently). Every package directory contains a .ultra.cache.json file that contains hashes of all files and build artifacts in your repository. Internally this uses git ls-files for files under source control and simple mtime timestamps for build artifacts. When building a package, the current state is compared with the .ultra.cache.json. Builds are skipped when no changes were detected.

Optimized builds using the dependency tree and files cache, are automatically triggered when running the build script or using --build with a custom script or command.

All commands below will trigger optimized builds.

$ ultra -r --build
...

$ ultra -r build
...

$ ultra -r --build mycustombuildscript
...

If for some reason you want to rebuild a package, use --rebuild or rebuild.

If you want some files to be excluded from the .ultra.cache.json, you can create a .ultraignore file. The format is similar to .gitignore. Whenever a file changes that is listed in your .ultraignore, a rebuild will not be triggered.

:bar_chart: Monitor

With ultra --monitor you can easily monitor all running node processes on your machine.

For every process, you can also see the package where the command was executed and a clean command line.

Monitor

:zap: Fast

Ultra parses your package.json scripts and will only execute the commands that are really needed. Any script interdependencies are resolved during the parsing stage. This ensures there's pretty much no overhead in execution by Ultra itself, since it's only running once. yarn run or npm run on the other hand, will spawn new yarn or npm child processes as needed by the package scripts.

| | npm run | npx | yarn | yarn exec | ultra | | ------------------------ | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | | package.json scripts | :white_check_mark: | :x: | :white_check_mark: | :x: | :white_check_mark: | | ./node_modules/.bin/ | :x: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | system binaries | :x: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | | execution overhead (1) | 250ms | 60ms | 220ms | 200ms | 65ms |

1. each program was run 10x with the command true or {scripts:{"true":"true}} to calculate the execution overhead

Suppose you would want to run a script that calls 5 other scripts by using && and/or post/pre.

  • Using yarn, you would have a total overhead of 2.5s (10x 250ms)
  • Using ultra, you hit the overhead only once, so the total overhead would still be 65ms

To make execution ultra fast, you can configure which scripts should be ran concurrently.

:grey_exclamation: there's no need to switch your scripts over to ultra. Even with the optional configuration you can still use yarn or npm to run your scripts if you want to.

Example builds:

| | yarn | ultra not concurrent | ultra concurrent | | ----------------------------------------------------------- | ------ | ---------------------- | ------------------ | | build Ultra-Runner | 8.9s | 7.2s | 5.1s | | build Devmoji | 16s | 13s | 8s |

:art: Formatting

There are three output formats that each can be combined with --silent to hide command output.

--pretty is the default. It shows output in a hierarchical way and uses spinners to see exactly what's happening. Make sure to check out the animation at the top of this page. Every executed step shows the execution time.

--pretty combined with --silent is useful if you're only interested to see the overview:

--no-pretty doesn't use spinners and prefixes command output with the command name. This is useful for logging purposes.

Combining --no-pretty with --silent shows a flat overview.

--raw will show the exact output as you would expect when running the commands stand alone. If the command you're executing is interactive (reads from stdin), then this is the mode you should use.

:dizzy: Getting Started

Install with npm or yarn

globally

npm install -g ultra-runner
yarn global add ultra-runner

locally inside your project. use with npx ultra

npm install --dev ultra-runner
yarn add --dev ultra-runner

Now run ultra --info within your repository to see everything related to your monorepo

See optional configuration for information on how to setup concurrent script execution.

:rocket: Usage

$ ultra --help
Usage: ultra [options] <cmd> [cmd-options]

Workspace:
  --recursive, -r  Run command in every workspace folder concurrently                                      [boolean]
  --filter         Filter package name or directory using wildcard pattern                                  [string]
  --root           When using --recursive, also include the root package of the workspace                  [boolean]
  --concurrency    Set the maximum number of concurrency                                      [number] [default: 10]

Status:
  --info  Show workspace dependencies                                                                      [boolean]
  --list  List package scripts. Also works with --recursive                                                [boolean]
  --monitor           Show node process list, updated every 2 seconds                                      [boolean]
  --monitor-interval  Set process list interval in seconds                                     [number] [default: 2]

Build:
  --build, -b  Use dependency tree to build packages in correct order                                      [boolean]
  --rebuild    Triggers a build without checking for file changes                                          [boolean]

Formatting:
  --pretty  enable pretty output, spinners and separate command output. Default when a TTY [boolean] [default: true]
  --raw     Output only raw command output                                                                 [boolean]
  --silent  Skip script output. ultra console logs will still be shown                                     [boolean]
  --color   colorize output                                                                [boolean] [default: true]

Options:
  --version      Show version number                                                                       [boolean]
  --dry-run, -d  Show what commands would be executed, without actually executing them                     [boolean]

:gear: Optional Configuration

To allow parallel execution of your scripts, you can specify scripts that should run concurrently, in your package.json.

{
  "scripts": {
    "lint:eslint": "npx eslint bin/*.js src/*.ts __tests__/*.ts --cache",
    "lint:docs": "npx markdownlint *.md",
    "lint:ts": "npx tsc -p tsconfig.build.json --noEmit",
    "lint": "yarn lint:eslint && yarn lint:docs && yarn lint:ts",
    "prebuild": "yarn lint && yarn jest",
    "build": "..."
  },
  "ultra": {
    "concurrent": ["lint"]
  }
}
  • yarn build will run the lint and jest commands sequentially
  • ultra build will run all lint commands concurrently and then execute jest. (note that we can also add prebuild to concurrent, since tests don't depend on linting. this way all commands would run concurrently)

changelog

3.10.5 (2021-02-28)

Bug Fixes

  • 🐛 run build before release (6728329)

3.10.4 (2021-02-28)

Bug Fixes

  • 🐛 always ignore node_modules when listing packages (3defc7a)

3.10.3 (2021-02-27)

Bug Fixes

  • 🐛 don't feed root directory to ignore (a374485)

3.10.2 (2021-02-27)

Bug Fixes

  • 🐛 only ignore files when .ultraignore file exists (6f39967)

3.10.1 (2021-02-27)

Bug Fixes

  • ultraignore: allow ultraignore to work with tracked git files (#170) (65cc044)

Other

  • deps: pin dependency @yarnpkg/pnp to 2.3.2 (#169) (880073f)

3.10.0 (2021-02-26)

Features

  • git: ✨ added support for .ultraignore (#168) (fab9da1)

Documentation

  • 📚️ added info about .ultraignore (9675976)

Other

  • deps: 🔗 update (57d1d30)
  • ♻️ use @yarnpkg/pnp for proper typing of pnpapi (73eec5a)
  • 🎨 fixed some linting issues (bdcbe31)
  • 📦️ upgrade to Husky 5 (311e902)
  • deps: update all non-major dependencies (#157) (8bf50d4)

3.9.0 (2021-01-11)

Features

  • ✨ use --filter + to filter for cwd's dependencies (#155) (4aa061a)

3.8.1 (2021-01-11)

Bug Fixes

  • 🐛 resolve binaries from current package location and memoize costly operations (#154) (8c5ed2a)
  • 🐛 fixed linting errors related to pnpapi (0d32d08)

Other

  • 📦️ disable unicorn/import-reduce rule (392a5ae)
  • deps: pin dependency @types/pnpapi to 0.0.1 (#156) (581714b)
  • deps: update all non-major dependencies (#151) (f5b10f6)
  • deps: update dependency eslint-plugin-unicorn to v26 (#152) (f801087)

3.8.0 (2020-12-24)

Features

  • ✨ set default concurrency to number of cpus (a63c3d5)

Bug Fixes

  • 🐛 add -h as alias for --help (439f8cf)
  • 🐛 resolution in pnp subpackages (#150) (823def0)

Other

  • 📦️ fix semantic-release script (8c1b81c)
  • 📦️ fix semantic-release script (a90c790)
  • 📦️ fix semantic-release script (c13472b)
  • deps: 🔗 udpates (f7a062b)
  • deps: pin dependencies (#146) (f44b70e)
  • deps: update actions/setup-node action to v2 (#148) (d5b44b9)
  • deps: update all non-major dependencies (#147) (1d317e1)
  • deps: update dependency eslint-plugin-unicorn to v24 (#149) (32eeb3d)

3.7.1 (2020-12-14)

Bug Fixes

  • 🐛 support script run args npm run test -- --help (fixes #143) (b095a8a)

Other

  • 👷 fixed pnpm stuff (994dc09)
  • 👷 fixed pnpm test (2cda3cb)
  • 👷 pnpm recursive=false (e93c8f5)
  • 👷 use babel for code coverage (c851fe1)
  • 👷 use pnpm action (0f88b3f)
  • 📦️ semantic release config (7f8e9c4)
  • deps: 🔗 update (4187c20)
  • 📦️ update to node v14.15.1 (9ff679e)
  • 📦️ use pnpm instead of yarn (32d5b6f)
  • 📦️ use pnpm instead of yarn (0c14c19)
  • 📦️ use semantic-release instead of standard-version (cad9d7e)
  • deps: update all non-major dependencies (#145) (003ecdd)

Changelog

All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

3.7.0 (2020-12-13)

Features

  • ✨ yarn pnp commands run with node -r .pnp.js (#142) (cfbe921)

Other

  • 🎨 fixed linting errors (5cb2c40)
  • deps: update all non-major dependencies (#139) (6031ce4)
  • deps: update dependency eslint-config-prettier to v7 (#140) (5d5e528)

3.6.0 (2020-11-25)

Features

  • ✨ added support for Yarn v2 with PnP (fixes #137) (27b51b0)

Other

  • deps: update all non-major dependencies (#136) (edf7dba)
  • deps: update all non-major dependencies (#138) (7edfc96)

3.5.1 (2020-11-23)

Bug Fixes

  • deps: update dependency yargs to v16 (#126) (b77079c)
  • lint: 🐛 updated packages and fixed linting errors (d387c9c)

Other

  • deps: update all non-major dependencies (#135) (6ee076f)
  • 📚️ added npm@7 as supported (d3e75d0)
  • deps: update actions/checkout action to v2 (#134) (3b1b0d8)
  • deps: update all non-major dependencies (2d3a577)
  • deps: update all non-major dependencies (#124) (332c44f)
  • deps: update all non-major dependencies (#129) (b700edd)
  • deps: update all non-major dependencies (#132) (f4886a0)
  • deps: update all non-major dependencies (#96) (c83f475)
  • deps: update dependency eslint-plugin-unicorn to v23 (#133) (e73d58d)
  • deps: update dependency standard-version to v8.0.2 (#127) (183ac76)
  • deps: update dependency standard-version to v9 (#128) (3abd5f1)
  • deps: update dependency ts-node to v9 (#118) (db7fc3c)
  • deps: update dependency typescript to v4 (#119) (913d267)
  • deps: update eslint (#113) (9891ea8)
  • lint: 🎨 linter updates (a3c7e9c)
  • changed animated SVG into a link (f3860c2)
  • fixed typo (#130) (f2f18f5)
  • deps: update jest (#125) (d837716)

3.5.0 (2020-05-25)

Features

  • ✨ enable extended globbing for --filter (implements #91) (4ce826c)

3.4.1 (2020-05-25)

3.4.0 (2020-05-25)

Features

  • ✨ prefix output for --no-pretty with the package name when running concurrently #90 (4aa68a2)

Bug Fixes

  • 🐛 force full rebuild when not in a git repository #87 (38952e8)
  • 🐛 ultra should work in any directory (fixes #95) (9de98ae)

Other

  • deps: update dependency eslint to v7.1.0 (#94) (a12edc8)
  • 🎨 upgrade typescript-eslint (faa2fca)
  • deps: update all non-major dependencies (#86) (5fbfd87)
  • deps: update dependency ts-jest to v26 (#88) (f62603d)
  • deps: update eslint to v3 (#93) (c70cb66)

3.3.0 (2020-05-14)

Features

  • ✨ added --topology to use workspace dependencies for parallell commands other than "build" (c19f807)
  • ✨ you can now prefix a filter with '+' to always inlcude the dependencies of the filtered packages (see #79) (dd9ca3f)
  • ✨ you can now prefix a filter with '+' to always inlcude the dependencies of the filtered packages (see #79) (5b50ff0)

Bug Fixes

  • 🐛 #85 - Use the default list of ignore patterns only for workspace type "recursive" (d4afba9)
  • deps: update dependency tslib to v2 (#83) (41bdd1f)
  • 🐛 consistency in messages (#75) (606accd)

Other

  • ⚡️ use yargs only for showing help. parse argv in options (6d88ab5)
  • 🎨 eslint update (2dfc4d2)
  • 🚨 added tests for filter with dependencies (4f551f1)
  • deps: update all non-major dependencies (#68) (f2fe266)
  • deps: update all non-major dependencies (#71) (d687f9c)
  • deps: update all non-major dependencies (#82) (17af133)
  • deps: update dependency jest to v26 (#77) (bba6f4a)
  • deps: update dependency standard-version to v8 (#78) (abc8abd)
  • deps: update eslint (#80) (5ad8690)
  • 👷 added automatic management of stale issues (ae1b176)

3.2.2 (2020-04-28)

Bug Fixes

  • 🐛 increase max buffer for repo git file cache list to 1GB. (fixes #66) (a301cf7)
  • deps: update dependency wrap-ansi to v7 (#65) (6596da0)
  • Replace yarn command (#64) (ef35a17)

Other

  • deps: update all non-major dependencies (#58) (3d18fed)
  • deps: update all non-major dependencies (#62) (39d9da3)
  • deps: update dependency devmoji to v2.1.9 (#61) (c5cf382)
  • deps: update eslint (#63) (c7bf762)
  • lint: 🎨 unicorn/no-null (cf81451)

3.2.1 (2020-04-02)

Bug Fixes

  • 🐛 make the Runner.runRecursive method asynchronous (#56) (10b8853)
  • deps: update dependency chalk to v4 (#54) (8da7549)
  • test: 🐛 🚨 fix tests that call runner and expected a process.exit(1) (8b1ed9b)
  • 🐛 make runRecursive return a promise & move process.exit to cli (9b4adf1)

Other

  • deps: 🔗 ➖ dep strip-json-comments (8af4d1e)
  • deps: 🔗 Merge branches 'master' and 'master' of github.com:folke/ultra-runner (6b8d87e)
  • deps: update all non-major dependencies (#52) (6bbc7bf)
  • deps: update dependency @types/prettier to v2 (#55) (4c04e19)
  • deps: update dependency @types/sinon to v9 (#53) (e872990)

3.2.0 (2020-03-28)

Features

  • ✨ add all vscode node procs under one combined vscode root (b1e499b)

Other

  • deps: update dependency @types/node to v13.9.5 (#51) (379caa0)

3.1.0 (2020-03-27)

Features

  • ✨ expose PackageJson from type-fest (a792cc5)
  • ✨ include dev dependencies in dep topology (4b5a566)

Other

  • deps: 🔗 update (ccbaafd)
  • deps: update all non-major dependencies (#50) (a90f735)

3.0.1 (2020-03-26)

Bug Fixes

  • 🐛 terminal now properly updates changed lines (d366be7)

Other

  • deps: update dependency eslint-plugin-unicorn to v18 (#49) (a66a9ee)
  • deps: update dependency jest to v25.2.2 (#47) (2810354)
  • ⚡️ set spinner interval to 120 instead of 80 (6c916e9)

3.0.0 (2020-03-25)

⚠ BREAKING CHANGES

  • 💥 🐛 --concurrency was one of. Concurrency of 1 is now correct

Features

  • ✨ added --serial option that is the same as --concurrency 1 (10e09a7)
  • ✨ quit --monitor on [q] (7703f40)

Bug Fixes

  • 🐛 force build when package has not been added to Git (17d5dea)
  • 💥 🐛 --concurrency was one of. Concurrency of 1 is now correct (d85781c)

Other

  • deps: update dependency @types/node to v13.9.4 (#46) (86d8ec2)
  • 🎨 prettier 2.0 (b2d2d3b)

2.3.6 (2020-03-24)

Bug Fixes

  • 🐛 correctly handle post and pre scripts when running concurrently (fixes #45) (9a5c670)

2.3.5 (2020-03-24)

Bug Fixes

  • 🐛 use correct PATH key on all platforms. It's "Path" instead of "PATH" on Windows (a90a310)

Other

  • deps: update dependency devmoji to v2.1.7 (#44) (5a2d994)

2.3.4 (2020-03-24)

Bug Fixes

  • 🐛 always extend PATH with local node_modules/.bin directory for commands that execute child processes like nyc #35 (b375017)

Other

  • deps: update all non-major dependencies to v2.25.0 (#42) (2d869ae)
  • deps: update dependency @types/prettier to v1.19.1 (#41) (d6266f4)
  • deps: update dependency prettier to v2.0.2 (#43) (239d833)

2.3.3 (2020-03-22)

Bug Fixes

  • 🐛 added support for specifying env vars before the command (edcb0bf)

Other

  • 🎨 Prettier 2.0 (8b19431)
  • 🚨 added tests for env vars prefixes (e3d2335)
  • deps: pin dependency @types/cross-spawn to 6.0.1 (#36) (547f539)
  • deps: update all non-major dependencies (#34) (ca36459)
  • deps: update all non-major dependencies (#38) (7327851)
  • deps: update dependency @types/rimraf to v3 (#39) (0459b43)
  • deps: update dependency prettier to v2 (#40) (6642656)

2.3.2 (2020-03-18)

Bug Fixes

  • 🐛 process-list now shows node processes on windows (03d8087)
  • 🐛 use cross-spawn for better windows support (d5b6450)

2.3.1 (2020-03-16)

Bug Fixes

  • 🐛 stricter regex for known binaries (5d5fc92)

2.3.0 (2020-03-15)

Features

  • ✨ sort by total cpu for parent process including its children (755dc60)

2.2.1 (2020-03-15)

Bug Fixes

  • 🐛 some node processes were not shown due to issue with ps-list (e4d4f54)
  • 🐛 tree rendering should now always be correct (6e1fe43)

Other

  • deps: 🔗 update (4f6f824)
  • deps: 🔗 update (139d590)
  • deps: update dependency @types/chai to v4.2.11 (#32) (5b8c607)
  • deps: update dependency devmoji to v2.1.6 (#33) (ecc9dab)

2.2.0 (2020-03-13)

Features

  • ✨ added new node process monitoring feature (c36ca83)

Other

  • ♻️ moved hideCursor code to terminal (9d201bf)
  • ♻️ moved onProcessExit to its own file (daf786a)
  • 👷 :del: yarn cache (23b501f)
  • 👷 don't run full build in CI (1939805)
  • 📚️ added --monitor (8a1b63f)
  • 🚨 fixed issue with runner test and rollup (1227509)
  • 🚨 lowered code coverage (ba16c52)
  • deps: update all non-major dependencies (#28) (c6084a9)
  • deps: update dependency eslint-plugin-unicorn to v17 (#31) (4f4818c)
  • 📚️ added missing info on output zooming (36bb8e9)

2.1.2 (2020-03-05)

2.1.1 (2020-03-05)

Bug Fixes

  • 🐛 ➕ tslib as a runtime dependency (92a17a0)

2.1.0 (2020-03-05)

Features

  • ✨ expose ultra-runner as a module as well, including type definitions (9bb6076)

Other

  • deps: 🔗 update (a7b748e)
  • deps: 🔗 yarn.lock (8a4f33a)
  • deps: pin dependencies (2d55797)
  • deps: update node.js to v13.10.1 (#26) (f2fe227)
  • merge: 🔧 Merge branch 'master' of github.com:folke/ultra-runner (7b6e9e4)
  • ♻️ don't use Object.fromEntries (a829863)
  • 📚️ added todo (5237479)
  • 🚨 🐛 issue with parallel running of jest tests (785a389)

2.0.1 (2020-03-04)

Bug Fixes

  • 🐛 properly clear down and reset cursor to [0,0] on terminal resize (c3addab)

Other

  • ♻️ use yamljs and json5 instead of yaml and comment-json. smaller deps (b6d3994)

2.0.0 (2020-03-04)

⚠ BREAKING CHANGES

  • 💥 ♻️ new command line options

Features

  • ✨ added --build, --concurrency, --debug and --root to cli (0c277ef)
  • ✨ added --list to show available scripts (6f9224a)
  • ✨ added initial support for rush workspaces (a771ec6)
  • ✨ added support for lerna, yarn and pnpm workspaces (f2b387d)
  • ✨ automatically scroll spinner output (79a9dcd)
  • ✨ builds are skipped when no files were changed (86c9966)
  • ✨ imply build when using --build. Same for --rebuild (931ef32)
  • ✨ moved to yargs for cli, instead of commander (cc2356a)
  • ✨ optimized ansi terminal rendering (1e65903)
  • ✨ package filtering for --recursive (4422d7c)
  • ✨ show detected workspaces and package manager in --info (6902c19)
  • ✨ use fast-glob to find packages (c35da68)
  • ✨ you can now use "rebuild" which will trigger a forced build (abde0e3)

Bug Fixes

  • 🐛 don't stat .ultra.cache.json files and ignore top level directories (5799c63)
  • 🐛 max resize listeners when running tests (6044beb)
  • 🐛 properly kill child processes when exiting (099f879)
  • 🐛 removed circular dependency (57e162c)

Other

  • 📚️ fixed linter errors (e17ddc8)
  • 📚️ updated for new release (9afaa8b)
  • deps: 🔗 ➖ some deps (31cd246)
  • deps: update node.js to v13.10.0 (#24) (68b3333)
  • ♻️ added Workspace class for managing packages in monorepo (3f122c8)
  • ♻️ command output formatter to its own file (01cd3d3)
  • ♻️ filtering is now part of Workspace (fa8b41b)
  • ♻️ refactored multiple classes (083f567)
  • ♻️ use HASH_FILE constant for ignoring ultra cache files (fbfa5b7)
  • ⚡️ dynamically import fast-glob (51d01bb)
  • ⚡️ dynamically load yaml and comment-json (d443d61)
  • ⚡️ get package from root instead of loading it through workspaces (a22ab34)
  • ⚡️ get rid of cli-spinners, cli-cursor, and cursor-restore (18d5424)
  • ⚡️ no need to pipe stuff through through2 (d469e69)
  • ⚡️ only load yargs for more complex args (cb6f204)
  • 💥 ♻️ new command line options (e1a81ac)
  • 🚨 fixed tests for Win32 (f1cf7e1)
  • 🚨 fixed tests for Win32 (a9a6799)
  • deps: 🔗 update (b7dc359)
  • deps: pin dependency @types/yargs to 15.0.4 (#23) (00f28df)
  • 🚨 added more tests for code coverage (ca06588)
  • 🚨 added workspace test data (1510390)
  • 🚨 don't trigger --build during runner tests (c4a2db3)
  • 🚨 fix filtering for Windows paths (815234e)
  • 🚨 fix for Windows tests (ed005a7)
  • 🚨 fixed tests for Win32 (8813609)
  • 🚨 fixed tests for Win32 (39e1394)
  • 🚨 fixed tests for Win32 (f1e0c5e)
  • 🚨 set jest threshold to 75 for now (2af5ff4)
  • 🚨 updated jest tests (084ef92)
  • 🚨 updated tests (23fd06b)
  • deps: 🔗 update (4770196)
  • deps: 🔗 updates (43223f5)
  • deps: pin dependencies (#19) (a395059)
  • deps: pin dependencies (#21) (0716672)
  • deps: update all non-major dependencies (#20) (5212d4e)
  • 🚨 fixed tests for Windows (71612b4)
  • 🚨 set coverage treshold to 85 (630ce18)
  • 🚨 updated tests (ff9e055)
  • deps: pin dependencies (#16) (c2766be)
  • deps: update dependency eslint-plugin-jest to v23.8.1 (#18) (8b3d44d)
  • deps: update node.js to v13.9.0 (#17) (2d740b0)

1.1.0 (2020-01-27)

Features

  • ✨ added --cwd (a365cd2)
  • ✨ added support for bins higher up in monorepo (80c9257)

Bug Fixes

  • 🐛 endless loop on Windows when getting local bins (17d250c)
  • 🐛 getBin for win32 (5a0227e)
  • 🐛 resolve on win32 (ef7e564)

Other

  • 🔧 unused import (6297155)
  • deps: 🔗 package upgrade (1d3def7)
  • deps: 🔗 package upgrade merge (8a48387)
  • deps: add renovate.json (0cd77a6)
  • deps: pin dependencies (#3) (6f883f1)
  • deps: pin dependency husky to 4.2.1 (#6) (2ba8227)
  • deps: update all non-major dependencies (#9) (0723fd8)
  • deps: update dependency devmoji to v2.1.1 (#7) (a3f365d)
  • deps: update dependency devmoji to v2.1.3 (#8) (f24a351)
  • deps: update node.js to v13.7.0 (ef93093)
  • github: 👷 prepare semantic-release (15cae83)
  • github: 👷 use node 12.x LTS version (0cca149)
  • renovate: 👷 better renovate config (9a58214)
  • 👷 added env.CI to top level build (e165b75)
  • 👷 added support for [skip ci] (080c23f)
  • 📚️ removed travis badge (860aab8)
  • 🚨 fixed tests for Windows (8111d8d)
  • added matrix for build (16ba5e2)
  • added renovate badge (e6d272e)
  • fixed coveralls parallel (9a5951d)
  • updated build.yml [skip ci] (7cee0b3)
  • updated jest coverage stats (ec7e632)

1.0.8 (2020-01-24)

Other

  • ♻️ main should be lib/cli.js (e640cb1)
  • 👷 added Github build action (5b6bd03)
  • 👷 fixed Github build action (efd50e7)
  • 📚 added Github CI badge (56aa598)
  • 📚️ migrate travis-ci.org to .com [skip ci] (48095bb)
  • 🚨 code coverage to 100% 💯 💥 (713c633)

1.0.7 (2020-01-23)

1.0.6 (2020-01-23)

Other

  • 📚️ fixed links on badges (62e18ad)

1.0.5 (2020-01-23)

Bug Fixes

  • 🐛 force hard wrapping on long lines (ea88b58)

Other

  • 📚️ added badges (f32cba4)
  • 🚨 added a bunch of tests (b35827c)
  • eslint: 🎨 added additional eslint rules (a3a44c5)
  • added Apache 2.0 license (d6ce07a)

1.0.4 (2020-01-22)

Other

  • 📚️ fixed markdown table (8fca4e1)

1.0.3 (2020-01-22)

Other

  • 📚️ updated README.md (e6f96ab)
  • 🔧 release artifacts (e7c0379)

1.0.2 (2020-01-22)

Bug Fixes

  • 🐛 properly wrap long ansi lines to preseve CSI output (9f7c4cd)

Other

  • release: 🚀 1.0.1 (2c9ae09)
  • 🎨 removed debug (7bee55c)
  • deps: 🔗 downgrade Jest (98b16c6)
  • eslint: 🎨 added prefer-template (3467581)
  • eslint: 🎨 fixed linting errors (9a048b8)
  • 📚️ new demo svg (a850825)
  • 🔧 tsconfig.json (5bf564c)
  • spinner: ⚡️ optimized rendering of spinners (099e1fa)
  • 🔧 vscode launch config for ultra (8056bee)

Changelog

All notable changes to this project will be documented in this file. See standard-version for commit guidelines.