eslint-config-niieani
Version:
Reusable ESLint config for Beemo configured projects.
63 lines (52 loc) • 2.1 kB
text/typescript
/* eslint-disable no-magic-numbers */
/* eslint-disable import/no-commonjs,import/no-import-module-exports */
import type eslint from 'eslint'
import {getTargetNodeRuntime} from '@niieani/scaffold-config-constants'
const nodeVersion = getTargetNodeRuntime()
const config: eslint.Linter.Config = {
plugins: ['node'],
env: {
browser: false,
node: true,
},
rules: {
// Ensure proper error handling
'node/no-callback-literal': 'error',
// Ensure NPM packages are valid and can be published to the target engine
'node/no-deprecated-api': 'error',
'node/no-unpublished-bin': 'error',
'node/no-unpublished-import': 'error',
'node/no-unpublished-require': 'error',
'node/no-unsupported-features/es-builtins': 'error',
'node/no-unsupported-features/node-builtins': 'error',
'node/shebang': 'error',
// Prefer exitCode instead of exit as it doesnt abort the script
'no-process-exit': 'error',
'node/process-exit-as-throw': 'error',
// Prefer globals when available
'node/prefer-global/buffer': 'error',
'node/prefer-global/console': 'error',
'node/prefer-global/process': 'error',
'node/prefer-global/text-decoder': 'error',
'node/prefer-global/text-encoder': 'error',
'node/prefer-global/url': 'error',
'node/prefer-global/url-search-params': 'error',
// Prefer promises APIs when they are available
'node/prefer-promises/dns': nodeVersion >= 15 ? 'error' : 'off',
'node/prefer-promises/fs': nodeVersion >= 14 ? 'error' : 'off',
// We use TypeScript/ES modules instead
'node/exports-style': 'off',
'node/no-exports-assign': 'off',
'node/no-unsupported-features/es-syntax': 'off',
// Handled by the import plugin
'node/file-extension-in-import': 'off',
'node/no-extraneous-import': 'off',
'node/no-extraneous-require': 'off',
'node/no-missing-import': 'off',
'node/no-missing-require': 'off',
// This is a common occurrence in node scripts
'global-require': 'off',
'import/no-dynamic-require': 'off',
},
}
module.exports = config