shellcheck
v4.1.0
Published
Wrapper to download shellcheck
Readme
shellcheck
ShellCheck - A shell script static analysis tool.
Downloads the most recent version of koalaman's ShellCheck.
Installation
Warning: Node.js version
>= 20.9.0is required
npm install --save-dev shellcheckUsage
Note: On first execution
shellcheckit's automatically downloaded
Note: It's recommended to execute
shellcheckusingnpx
Note: Proxy support via
HTTP_PROXY,HTTPS_PROXYandNO_PROXYenvironment variables
Note: By default, all GitHub requests are anonymous. If you encounter error
403 | rate limit exceeded(e.g., in CI), set the environment variableGITHUB_TOKENto use your own personal access token
Execute shellcheck directly from your npm scripts:
{
"scripts": {
"lint": "npx shellcheck path/to/script.sh"
}
}Environment Variables
| Name | Values | Default | Description |
| :-------------------------- | :--------------------------------------------------------- | :---------------------------------------------------------------------------- | :--------------------------------------------------------------------- |
| SHELLCHECKJS_RELEASE | latest | v(0\|[1-9]\d*)\.(0\|[1-9]\d*)\.(0\|[1-9]\d*) | latest | Release version. See https://github.com/koalaman/shellcheck/releases |
| SHELLCHECK_BIN | Any valid path to an executable binary file | linux or darwin: ./bin/shellcheck win32: .\bin\shellcheck.exe | ShellCheck executable binary path |
| SHELLCHECKJS_LOGGER_LEVEL | off | debug | info | warn | error | info | Logger level |
Programmatic
Note: More functions, utilities, and constants are available
import { shellcheck, download, config } from 'shellcheck';
/**
* Spawn ShellCheck.
* Download ShellCheck if not found or invalid.
*/
await shellcheck({
args: ['path/to/script.sh', 'path/to/another/script.sh'],
// Options...
})
.then(result => {
// Check error
if (result.error) throw result.error;
// Print stdout
if (result.stdout) console.log(result.stdout.toString('utf8'));
// Print stderr
if (result.stderr) console.error(result.stderr.toString('utf8'));
// Exit code
if (result?.status !== 0) throw new Error(`Exit code: ${result?.status}`);
})
.catch(err => {
console.error(`Error: ${err}`);
throw err;
});
/**
* Download ShellCheck.
*/
await download({
destination: `path/to/destination/shellcheck`,
// destination: `path\\to\\destination\\shellcheck.exe` // Windows
// Options...
});Compatibility
Note:
PlatformandArchitecturefollow Node.js naming convention
| Platform | Architecture |
| ------------ | ---------------- |
| linux | x64 |
| linux | arm64 |
| linux | riscv64 |
| darwin | x64 |
| darwin | arm64 |
| win32 | x64 |
Contributing
I would love to see your contribution :heart:
See CONTRIBUTING guidelines.
License
This project is licensed under the MIT License.
See LICENSE file for details.
