In general, shells should be avoided because they are:
- Not cross-platform, encouraging shell-specific syntax.
- Slower, because of the additional shell interpretation.
- Unsafe, potentially allowing command injection (see the escaping section).
In almost all cases, plain JavaScript is a better alternative to shells. The following page shows how to convert Bash into JavaScript.
import {execa} from 'execa';
await execa({shell: '/bin/bash'})`npm run "$TASK" && npm run test`;When the shell option is true, sh is used on Unix and cmd.exe is used on Windows.
sh and cmd.exe syntaxes are very different. Therefore, this is usually not useful.
await execa({shell: true})`npm run build`;Next: 📜 Scripts
Previous: 💬 Escaping/quoting
Top: Table of contents