Skip to content

v2.0.0

Compare
Choose a tag to compare
@falkenhawk falkenhawk released this 01 Aug 08:20
· 17 commits to master since this release

v2 introduces ESLint as the main linting tool in the coding-standard package, replacing TSLint which has been deprecated for many years already.

The configuration is based on the recommended rulesets from ESLint and typescript-eslint.

It also includes ESLint Stylistic which replaces deprecated rules from eslint and typescript-eslint.

Currently, it uses ESLint v8 and typescript-eslint v6.
The upgrade to ESLint v9 and typescript-eslint v8 is planned for the next major release.

@ovos-media/coding-standard/eslint exports a function that accepts an object with the following options:

  • console: ban, ban-log or allow - whether to ban or allow console usage. Defaults to:
    • ban-log (which only allows console.error(), console.warn() and console.info()) when react: true,
    • allow otherwise.
  • disableTypeChecked: List ts files which should be linted, but are not covered by tsconfig.json
    to avoid Parsing error (...) TSConfig does not include this file. read more »
    Example: ['dangerfile.ts', '.storybook/*.ts?(x)']
  • indent (default: 2): number of spaces to use for indentation or tab for tabs
  • testsDir (default: {spec,test,tests}): directory where test files are located.
    Example: src for single directory, {spec,tests} to include multiple directories.
    In addition, files in __tests__ folders and files with *.spec.*/*.test.* filenames are picked up as test files, even outside of testsDir.
  • cypress (default: false): enable Cypress-specific rules
  • jest (default: false): enable Jest-specific rules
  • mocha (default: false): enable Mocha-specific rules
  • react (default: false): enable React-specific rules
  • vitest (default: false): enable Vitest-specific rules

The function returns an array of ESLint "Flat Config" objects.
You may further customize the default configuration by adding your own configuration objects to the exported array.

const eslint = require('@ovos-media/coding-standard/eslint');

module.exports = [
  ...eslint({ react: true, vitest: true }),
  // your custom config and overrides
  {
    ignores: ['public'],
  },
  {
    rules: {
      // toggle off unwanted rules
      'import/order': 'off',
    },
  },
  {
    files: ['**/*.?(m|c)[jt]s?(x)'],
    rules: {
      // your custom rules
    },
  },
];