UNPKG

too

Version:

Combine multiple processes' Stdout/Stderr/SIGINT to keep them all foreground

105 lines (75 loc) 2.29 kB
# too [![Node.js CI](https://github.com/otiai10/too.js/actions/workflows/node.js.yml/badge.svg)](https://github.com/otiai10/too.js/actions/workflows/node.js.yml) [![codecov](https://codecov.io/gh/otiai10/too.js/branch/main/graph/badge.svg?token=CAnYtu8IQV)](https://codecov.io/gh/otiai10/too.js) [![Maintainability](https://api.codeclimate.com/v1/badges/7d0171c59182875438bf/maintainability)](https://codeclimate.com/github/otiai10/too.js/maintainability) [![npm version](https://badge.fury.io/js/too.svg)](https://badge.fury.io/js/too) The opposite of `tee` command, combining stdout/stderr from multiple commands and kill them with one signal (Ctrl+C). ``` -> command 1 stream ─┐ -> command 2 stream ─┤ └─ stdout/stderr/SIGINT to kill both ``` It means, you can write 2 parallel jobs in 1 npm script!! ```js // package.json { "scripts": { "start": "too --cmd 'rails s' --cmd 'webpack'" // Start server and client HMR in parallel, // and you can kill both by one Ctrl+C!! }, } ``` # Why? Sometimes we do that, ```sh % nohup rails server & % nohup npm start-webpack & # after you did some work % pkill rails % pkill webpack ``` I don't wanna do this any more, just wanna run multiple processes and kill them with one `Ctrl+C`! # Usage ```sh % too --cmd 'rails server' --cmd 'npm start-webpack' ``` Then you will get ```sh [0] rails # Rails log here [1] npm # NPM log here # And you can kill both by one `Ctrl+C` (SIGINT) ``` # Too files Or you can define your tasks on a yaml file ```yaml # too.local.yaml main: jobs: - run: rails server - run: npm start-webpack ``` then ```sh % too ./too.local.yaml ``` ## Including env files You can merge `KEY=value` env files into the environment with `include.env_files`. Paths are resolved from the current working directory. ```yaml # too.local.yaml include: env_files: - ./example/secrets.env # KEY=value lines, merged into the environment main: jobs: - run: echo $API_TOKEN ``` `env_files` is the only supported include form; the listed files are read as `KEY=value` pairs (not as nested too-files). See `example/too.local.yaml`. # Install ```sh % npm install too ``` # Issues - https://github.com/otiai10/too.js/issues