UNPKG

@atlaskit/eslint-config-base

Version:

The eslint configuration for AtlasKit components

108 lines (91 loc) 4.12 kB
module.exports = { name: '@atlaskit/eslint-config-base', extends: 'airbnb', parser: 'babel-eslint', env: { browser: true, }, plugins: ['react', 'prefer-object-spread', 'compat'], rules: { // http://eslint.org/docs/rules/arrow-parens // Relaxed from airbnb because it conflicts with prettier 'arrow-parens': 'off', // http://eslint.org/docs/rules/comma-dangle // Custom rules for when trailing comma's are required 'comma-dangle': [ 'error', { arrays: 'always-multiline', objects: 'always-multiline', imports: 'always-multiline', exports: 'always-multiline', functions: 'ignore', }, ], // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/extensions.md // When importing files you do not need to add file extensions for the following extensions 'import/extensions': [ 'error', 'always', { js: 'never', jsx: 'never', ts: 'never', tsx: 'never', }, ], // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-webpack-loader-syntax.md // Allow webpack loader syntax in imports. 'import/no-webpack-loader-syntax': 'off', // http://eslint.org/docs/rules/no-plusplus // Allowing ++ on numbers 'no-plusplus': 'off', // http://eslint.org/docs/rules/no-param-reassign // Cannot reassign function parameters but allowing modification 'no-param-reassign': ['error', { props: false }], // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-filename-extension.md // Allowing jsx in files with any file extension (old components have jsx but not the extension) 'react/jsx-filename-extension': 'off', // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-sort-props.md // JSX props must be in alphabetical order // Disabled as this is creating too much noise in logs and is not being actively addressed 'react/jsx-sort-props': 'off', // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-unknown-property.md // This was turned off for wc - but should be re-enabled eventually 'react/no-unknown-property': ['off'], // http://eslint.org/docs/rules/no-multiple-empty-lines // Disallow more than 1 empty lines 'no-multiple-empty-lines': ['error', { max: 1 }], // http://eslint.org/docs/rules/padded-blocks // Enforce no padding within blocks 'padded-blocks': ['error', 'never'], // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-unused-prop-types.md // Adding 'skipShapeProps' as the rule has issues with correctly handling PropTypes.shape 'react/no-unused-prop-types': ['error', { skipShapeProps: true }], // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/prefer-stateless-function.md // Opt out of preferring stateless functions // Rationale: https://extranet.atlassian.com/display/AtlasKit/React+component+conventions 'react/prefer-stateless-function': 'off', // https://github.com/bryanrsmith/eslint-plugin-prefer-object-spread // Prefer spread {...} over Object.assign except for object modifications 'prefer-object-spread/prefer-object-spread': 'error', // http://eslint.org/docs/rules/no-restricted-properties 'no-restricted-properties': [ 'error', { // Disabling the use of React.Component // Rationale: https://extranet.atlassian.com/display/AtlasKit/React+component+conventions object: 'React', property: 'Component', message: 'Please use PureComponent instead.', }, ], // https://github.com/amilajack/eslint-plugin-compat // Error when violating browser compatibility 'compat/compat': 'error', // Disallowing the use of variables starting with `_` unless it called on `this`. // Allowed: `this._secret = Symbol()` // Not allowed: `const _secret = Symbol()` 'no-underscore-dangle': ['error', { allowAfterThis: true }], }, };