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

Package detail

shellcheck

gunar413.9kMIT3.1.0TypeScript support: included

Wrapper to download shellcheck

bash, sh, shell, shellcheck

readme

shellcheck

ci codeql

ShellCheck - A shell script static analysis tool.

Downloads the most recent version of koalaman's ShellCheck.

Installation

Warning: Node.js version >= 18.12.0 is required

npm install --save-dev shellcheck

Usage

Note: On first execution shellcheck it's automatically downloaded

Note: It's recommended to execute shellcheck using npx

Note: Proxy support via HTTP_PROXY, HTTPS_PROXY and NO_PROXY environment variables

Note: By default, all GitHub requests are anonymous. If you encounter error 403 | rate limit exceeded (e.g., in CI), set the environment variable GITHUB_TOKEN to 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: Platform and Architecture follow Node.js naming convention

Platform Architecture
linux x64
linux arm64
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.

changelog

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

v3.1.0 - 2025-01-31

Added

  • Configure binary path via environment variable SHELLCHECKJS_BIN

Removed

  • binDir configuration option. Configuration bin now contains the complete path to the ShellCheck executable binary (including both binary directory and binary name)

v3.0.0 - 2024-06-06

Added

  • Configure release version via environment variable SHELLCHECKJS_RELEASE

  • Configure logger level via environment variable SHELLCHECKJS_LOGGER_LEVEL

Deprecated

  • Drop support for Node.js versions that do not match >=18.12.0

v2.2.0 - 2023-02-04

Changed

Removed

  • Problematic and unused decompression libraries

v2.1.0 - 2023-02-02

Added

v2.0.0 - 2023-01-31

Added

  • linux (arm64 and x86), darwin (x86) and win32 (x86) support

  • Programmatic usage

  • TypeScript support

  • Tests

Changed

  • Download ShellCheck binary only when calling npx shellcheck for the first time

Deprecated

  • Drop support for all Node.js versions that do not match >=18.4.0 || >=16.17.0

Removed

  • Non Node.js dependency

  • Script (.sh)