9.0.1 • Published 8 months ago

@balena/lint v9.0.1

Weekly downloads
5,335
License
Apache 2.0
Repository
github
Last release
8 months ago

@balena/lint

@balena/lint is a linter & formatter based on eslint and prettier to detect style errors based on balena.io coding guidelines.

Overview

@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.

Files checked

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"

Prettier

You can reference the prettier configuration file to your consumer project from ./config/.prettierrc.

Usage

You can use this module as:

  1. 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
  2. A development dependency in package.json with npm 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!
  3. 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'));

Rules that require type information

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
    }
}

Support

If you're having any problem, please raise an issue on GitHub and the balena.io team will be happy to help.

Tests

Run the test suite by doing:

$ npm install && npm test

Contribute

Before submitting a PR, please make sure that you include tests, and that npm run lint runs without a warning.

License

The project is licensed under the Apache 2.0 license.

8.2.8

9 months ago

9.0.1

9 months ago

9.0.0

9 months ago

8.2.7

11 months ago

8.2.6

11 months ago

8.2.3

11 months ago

8.2.2

11 months ago

8.2.5

11 months ago

8.2.4

11 months ago

8.1.0

12 months ago

8.2.1

11 months ago

8.2.0

11 months ago

8.0.2

1 year ago

8.0.1

1 year ago

8.0.0

1 year ago

7.3.0

1 year ago

7.2.6

1 year ago

7.2.5

1 year ago

7.1.2

2 years ago

7.1.1

2 years ago

7.1.0

2 years ago

7.2.4

2 years ago

7.2.3

2 years ago

7.0.0

2 years ago

7.2.2

2 years ago

7.2.1

2 years ago

7.2.0

2 years ago

7.0.2

2 years ago

7.0.1

2 years ago

6.2.2

2 years ago

6.2.1

3 years ago

6.2.0

4 years ago

6.1.0

4 years ago

6.1.1

4 years ago

5.4.2

4 years ago

6.0.0

4 years ago

5.4.1

4 years ago

5.4.0

4 years ago

5.3.0

5 years ago

5.2.1

5 years ago

5.2.0

5 years ago

5.1.0

5 years ago

5.0.6

5 years ago

5.0.5

5 years ago

5.0.4

5 years ago

5.0.3

5 years ago

5.0.2

5 years ago

5.0.1

5 years ago

5.0.0

5 years ago

4.1.1

5 years ago

4.1.0

5 years ago

4.0.1

5 years ago

4.0.0

5 years ago