@balena/lint
is a linter & formatter based on eslint and prettier to detect style errors based on balena.io coding guidelines.
@balena/lint
uses balena's .eslintrc.js
and .prettierrc
.
If a .eslintrc.js
is found in the to-be-linted project
directory or its parents then the rules found in it will be merged with the default @balena/lint
ones.
Another way to to override the default balena lint rules is by specifying a configuration
file with the -f
parameter.
By default.ts
and .tsx
files are linted. You can also specify additional file extensions to be parse by using the -e option.
Eg: "-e js -e jsx"
You can reference the prettier configuration file to your consumer project
from ./config/.prettierrc
.
You can use this module as:
- A standalone project by installing it with
npm install -g @balena/lint
:
kostas@macbook:~/balena/test$ balena-lint src/
✓ src/test.ts
✓ Ok! » 0 errors and 0 warnings in 1 file
- A development dependency in
package.json
withnpm install --save-dev @balena/lint
. Then you can use the module in your build/testing process:
package.json
------------
...
"scripts": {
"lint": "balena-lint src/ && echo \"Done!\""
},
...
kostas@macbook:~/balena/test$ npm run lint
> test@1.0.0 lint /Users/kostas/balena/test
> balena-lint src/ && echo "Done!"
✓ src/test.ts
✓ Ok! » 0 errors and 0 warnings in 1 file
Done!
- A development dependency, that will get picked up by your IDE/Editor eslint/prettier.
Manually create these config files in your project root:
.eslintrc.js
{
"extends": [
"./node_modules/@balena/lint/config/.eslintrc.js"
]
}
For prettier config create .prettierrc.js
const fs = require('fs');
module.exports = JSON.parse(fs.readFileSync('./node_modules/@balena/lint/config/.prettierrc', 'utf8'));
Some linting rules such as no-floating-promises
require Typescript type information.
To enable these rules, use the -t
option to point to your project's tsconfig.json
file, if any. Without the -t
option, those rules will be disabled but may still print
a warning message such as:
Warning: The 'no-floating-promises' rule requires type information.
To prevent this warning message from being printed, override the rules by creating a
.eslintrc.js
file as described in the previous sections. For example:
{
"extends": "./node_modules/@balena/lint/config/.eslintrc.js",
"rules": {
"no-floating-promises": false
}
}
If you're having any problem, please raise an issue on GitHub and the balena.io team will be happy to help.
Run the test suite by doing:
$ npm install && npm test
- Issue Tracker: github.com/balena-io-modules/node-balena-lint/issues
- Source Code: github.com/balena-io-modules/node-balena-lint
Before submitting a PR, please make sure that you include tests, and that npm run lint
runs without a warning.
The project is licensed under the Apache 2.0 license.