@tunnckocore/execa

Thin layer on top of execa
that allows executing multiple commands in parallel or in sequence with control for concurrency
Please consider following this project's author, Charlike Mike Reagent, and :star: the project to show your :heart: and support.

If you have any how-to kind of questions, please read the Contributing Guide and Code of Conduct documents.
For bugs reports and feature requests, please create an issue or ping
@tunnckoCore at Twitter.

Project is semantically versioned & automatically released from GitHub Actions with Lerna.

Topic | Contact |
---|
Any legal or licensing questions, like private or commerical use |  |
For any critical problems and security reports |  |
Consulting, professional support, personal or team training |  |
For any questions about Open Source, partnerships and sponsoring |  |
Table of Contents
(TOC generated by verb using markdown-toc)
Install
This project requires Node.js >=8.11 (see Support & Release Policy). Install it using
yarn or npm.
We highly recommend to use Yarn when you think to contribute to this project.
$ yarn add @tunnckocore/execa
API
Generated using jest-runner-docs.
/home/charlike/github/tunnckoCore/opensource/@tunnckocore/execa/src/index.js
Uses execa v2, execa.command()
method.
As stated there, think of it as mix of child_process
's .execFile
and .spawn
.
It is pretty similar to the .shell
method too, but only visually because
it does not uses the system's shell, meaning it does not have access to
the system's environment variables. You also can control concurrency by
passing options.concurrency
option. For example, pass concurrency: 1
to run in series
instead of in parallel which is the default behavior.
Signature
function(cmds, options)
Params
cmds
- a commands to execute in parallel or seriesoptions
- directly passed to execa and so to child_process
returns
- resolved or rejected promises
It also can accept array of multiple strings of commands that will be
executed in series or in parallel (default).
Example
import { exec } from '@tunnckocore/execa';
async function main() {
await exec('echo "hello world"', { stdio: 'inherit' });
await exec(
[
'prettier-eslint --write foobar.js',
'eslint --format codeframe foobar.js --fix',
],
{ stdio: 'inherit', preferLocal: true, concurrency: 1 },
);
}
main();
Similar to exec
, but also can access the system's environment variables from the command.
Signature
function(cmds, options)
Params
cmds
- a commands to execute in parallel or seriesoptions
- directly passed to execa
returns
- resolved or rejected promises
Example
import { shell } from '@tunnckocore/execa';
async function main() {
await shell(['echo unicorns', 'echo "foo-$HOME-bar"', 'echo dragons'], {
stdio: 'inherit',
});
try {
await shell(['exit 3', 'echo nah']);
} catch (er) {
console.error(er);
}
}
main();
Same as execa's default export, see its documentation.
Think of this as a mix of child_process.execFile()
and child_process.spawn()
.
Signature
function(file, args, options)
Params
file
- executable to runargs
- arguments / flags to be passed to file
options
- optional options, passed to child_process
's methods
Example
import execa from '@tunnckocore/execa';
async function main() {
await execa('npm', ['install', '--save-dev', 'react'], { stdio: 'inherit' });
}
main();
back to top
Contributing
Guides and Community
Please read the Contributing Guide and Code of Conduct documents for advices.
For bug reports and feature requests, please join our community forum and open a thread there with prefixing the title of the thread with the name of the project if there's no separate channel for it.
Consider reading the Support and Release Policy guide if you are interested in what are the supported Node.js versions and how we proceed. In short, we support latest two even-numbered Node.js release lines.
Support the project
Become a Partner or Sponsor? :dollar: Check the Partner, Sponsor or Omega-level tiers! :tada: You can get your company logo, link & name on this file. It's also rendered on package page in npmjs.com and yarnpkg.com sites too! :rocket:
Not financial support? Okey! Pull requests, stars and all kind of contributions are always
welcome. :sparkles:
Wonderful Contributors
Thanks to the hard work of these wonderful people this project is alive! It follows the
all-contributors specification.
Don't hesitate to add yourself to that list if you have made any contribution! ;) See how,
here.
Consider showing your support to them. :sparkling_heart:
License
Copyright (c) 2017-present, Charlike Mike Reagent <opensource@tunnckocore.com>
& contributors.
Released under the MPL-2.0 License.