Skip to content

searchspring/eslint-config

Repository files navigation

eslint-config

This is based on the AirBnB style guide, but includes a number of additional plugins and some custom rules for our preferences.

Checkout the index.js for the details.

Plugins

Occasionally look here for new good stuff.

Install

To install just the config, use the line below.

npm i -D @searchspring/eslint-config

It's recommended to also install the Searchspring prettier config:

npm i -D @searchspring/prettier

In order to install all the related dependencies and a typical configuration for a JS project, also run the following:

npm i -D eslint husky lint-staged prettier fixpack

Then update your package.json with the following:

{
	husky: {
		hooks: {
			// Runs staged files for a commit through the scripts below
			'pre-commit': 'lint-staged',
		},
	},
	// Scripts for staged files
	'lint-staged': {
		'./package.json': ['fixpack', 'prettier --write'],
		'*.{js,ts}': ['prettier --write', 'eslint --fix'],
	},
	scripts: {
		format: 'prettier --write "**/*.{js,ts,json}"',
		lint: 'eslint --fix "**/*.{js,ts}"',
		// Important to run the fixpack before format, as format will fix the indentation
		style: 'fixpack && npm run format && npm run lint',
	},
}

Additional config if you are using Mocha

Update your eslint configuration with following:

	env: {
		...
+		mocha: true,
	},
	extends: [
		...
+		'plugin:mocha/recommended',
	]
+	plugins: [..., 'mocha'],
	rules: {
		...
+		'mocha/handle-done-callback': 'error',
+		'mocha/max-top-level-suites': 'off',
+		'mocha/no-exclusive-tests': 'error',
+		'mocha/no-global-tests': 'error',
+		'mocha/no-hooks-for-single-case': 'off',
+		'mocha/no-identical-title': 'error',
+		'mocha/no-mocha-arrows': 'off',
+		'mocha/no-nested-tests': 'error',
+		'mocha/no-pending-tests': 'error',
+		'mocha/no-return-and-callback': 'error',
+		'mocha/no-sibling-hooks': 'error',
	}