This library is a jest-runner for the shellcheck
library.
Install jest
(it needs Jest 21+) and jest-runner-shellcheck
yarn add --dev jest jest-runner-shellcheck
# or with NPM
npm install --save-dev jest jest-runner-shellcheck
In your package.json
{
"jest": {
"runner": "jest-runner-shellcheck",
"displayName": "lint:shell",
"moduleFileExtensions": ["sh", "bash"],
"testMatch": ["<rootDir>/src/**/*.sh"]
}
}
Or in jest.config.js
module.exports = {
runner: "jest-runner-shellcheck",
displayName: "shell lint",
moduleFileExtensions: ["sh", "bash"],
testMatch: ["<rootDir>/src/**/*.sh"]
};
Please update testMatch
to match your project folder structure
It is recommended to use the projects
configuration option to run multiple Jest runners simultaneously.
If you are using Jest <22.0.5, you can use multiple Jest configuration files and supply the paths to those files in the projects
option. For example:
// jest-test.config.js
module.exports = {
// your Jest test options
displayName: "test"
};
// jest-shellcheck.config.js
module.exports = {
// your jest-runner-shellcheck options
runner: "jest-runner-shellcheck",
displayName: "shell lint",
moduleFileExtensions: ["sh", "bash"],
testMatch: ["<rootDir>/src/**/*.sh"]
};
In your package.json
:
{
"jest": {
"projects": [
"<rootDir>/jest-test.config.js",
"<rootDir>/jest-shellcheck.config.js"
]
}
}
Or in jest.config.js
:
module.exports = {
projects: [
"<rootDir>/jest-test.config.js",
"<rootDir>/jest-shellcheck.config.js"
]
};
If you are using Jest >=22.0.5, you can supply an array of project configuration objects instead. In your package.json
:
{
"jest": {
"projects": [
{
"displayName": "test"
},
{
"runner": "jest-runner-shellcheck",
"displayName": "lint:shell",
"moduleFileExtensions": ["sh", "bash"],
"testMatch": ["<rootDir>/src/**/*.sh"]
}
]
}
}
Or in jest.config.js
:
module.exports = {
projects: [
{
displayName: "test"
},
{
runner: "jest-runner-shellcheck",
displayName: "shell lint",
moduleFileExtensions: ["sh", "bash"],
testMatch: ["<rootDir>/src/**/*.sh"]
}
]
};
yarn test
This project uses cosmiconfig, so you can provide config via:
- a
jest-runner-shellcheck
property in yourpackage.json
- a
jest-runner-shellcheck.config.js
JS file - a
.jest-runner-shellcheckrc
JSON file
In package.json
{
"jest-runner-shellcheck": {
"cliOptions": {
// Options here
}
}
}
or in jest-runner-shellcheck.config.js
module.exports = {
cliOptions: {
// Options here
}
};
The listed options are the ones provided by the shellcheck
CLI.
option | default | values | example |
---|---|---|---|
checkSourced | false |
`false | true` |
color | null |
`auto | always |
exclude | null |
"exclude": "CODE1,CODE2.." |
|
format | checkstyle |
`checkstyle | gcc |
shell | sh |
`sh | bash |
externalSources | false |
`false | true` |