UNPKG

eslint-config-standardize

Version:

My personal configuration based on StandardJS, ready for JavaScript and TypeScript

79 lines (65 loc) 1.58 kB
// @ts-check /* eslint-disable unicorn/prefer-spread, import/no-unresolved, import/no-dynamic-require */ const reactConf = require('./eslintrc-react.json') /** * @param {string} e * @param {number} ix * @param {string[]} arr */ const unique = (e, ix, arr) => arr.indexOf(e) === ix /** * @param {string} path */ const getReactVersion = path => { try { return require(path).version || '' } catch (e) { if (e.code !== 'MODULE_NOT_FOUND') console.error(e.message) } return '' } /** * @param {string} version * @param {*} preact */ const reactBlock = (version, preact) => preact ? { pragma: 'h', fragment: 'Fragment', version, } : { version, } /** * Will merge 'plugins', 'settings', and 'rules' * @param {typeof import('./eslintrc.json')} conf */ const configureReact = conf => { conf = conf || {} // First, try preact const preactVersion = getReactVersion('preact/compat/dist/compat') const version = preactVersion || getReactVersion('react') if (version) { const plugins = conf.plugins.concat(reactConf.plugins).filter(unique) const settings = { ...conf.settings, ...reactConf.settings, react: reactBlock(version, preactVersion), } const rules = { ...conf.rules, ...reactConf.rules, } if (preactVersion) { rules['react/no-unknown-property'] = [ 'error', { ignore: ['class', 'for', 'onDblClick'] }, ] } conf = { ...conf, plugins, settings, rules } } return conf } module.exports = configureReact