@cley_faye/eslint-config v1.1.0
Common eslint configuration
Installation
npm install -D @cley_faye/eslint-configUsage
Create an eslint configuration file at the root of your project named
.eslintrc.js containing the following:
const eslintConfig = require("@cley_faye/eslint-config");
module.exports = eslintConfig(
{
base: true,
promise: true,
jsx: true,
reactnative: true,
typescript: "./tsconfig.json",
},
{
env: {
es6: true,
node: true,
},
},
);The first argument is the configurations to pull-in. base is the generic
JavaScript options, jsx add rules for React and JSX, typescript add rules
for TypeScript.
For TypeScript, you can specify the name of your TypeScript configuration file,
in which case more rules will be enabled.
The second argument is the base eslint configuration, to specify extra options that are not defined by the default configuration. It can be empty if not needed.
The default configuration is:
module.exports = {
parser: "@typescript-eslint/parser", // only when typescript is enabled
env: {
es6: true,
node: true,
},
parserOptions: {
ecmaVersion: 2018,
sourceType: "module",
project: "./tsconfig.json", // only for typescript
},
overrides: [
{
files: ["webres/**/*.js", "webres/**/*.ts"],
env: {
browser: true,
},
},
],
extends: [ /\* enabled rule bases \*/ ],
rules: { /\* enabled rules \*/ },
}When specifying a base configuration, top-level properties will override these
defaults, and automatic rules will in turn inject themselves in top-level.
This mean that if you specify an overrides top-level property in the second
argument of eslintConfig(), the default overrides value will not be used, but
if a later rule (for typescript for example) have to populate overrides it
will extend whatever the current value is.
It is also appropriate to append any local-only changes to the ouptut of the configuration function.
Promises
Some extra rules for promises can be used by setting promise to true (enabled
by default).
TypeScript
If typescript is set to true, only basic typescript rules are enforced.
Instead, it is advised to provide the path to the typescript configuration file
(typically tsconfig.json), in which case rules that requires typing
informations are enabled.
React/JSX
To improve handling of React/JSX, set jsx to true.
It is also possible to pass a string indicating the expected React version.
If not specified, will set to "detect" and use the version installed in the
project.
React Native
To enable some more rules for React Native, set reactnative to true.
Dependencies
Depend on eslint.
If typescript is enabled, @typescript-eslint/eslint-plugin,
@typescript-eslint/parser must be installed.
If React/JSX is enabled, eslint-plugin-react must be installed.
If React Native is enabled, eslint-plugin-react-native must be installed.
Promise support requires eslint-plugin-promise.
These dependencies are not hard-set in package.json because not all projects
will require them.