UNPKG

eslint-config-niieani

Version:

Reusable ESLint config for Beemo configured projects.

124 lines 4.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable import/no-commonjs,import/no-import-module-exports */ const module_1 = require("module"); const scaffold_config_constants_1 = require("@niieani/scaffold-config-constants"); const config = { plugins: ['import', 'simple-import-sort'], settings: { 'import/extensions': scaffold_config_constants_1.EXTENSIONS, 'import/ignore': [...scaffold_config_constants_1.FOLDER_IGNORE_LIST, scaffold_config_constants_1.NON_JS_REGEX], 'import/resolver': { node: { extensions: [...scaffold_config_constants_1.EXTENSIONS, '.json'], }, }, 'import/parsers': { // eslint-disable-next-line no-magic-numbers '@typescript-eslint/parser': scaffold_config_constants_1.EXTENSIONS.slice(0, 4), }, }, // Inherits default import rules from Airbnb config. Will only override differences. // https://github.com/airbnb/javascript/blob/master/packages/eslint-config-airbnb-base/rules/imports.js rules: { // Doesnt play nice with TypeScript 'import/default': 'off', 'import/no-cycle': 'off', // Too controversial / abrasive 'import/max-dependencies': 'off', 'import/no-namespace': 'off', 'import/no-relative-parent-imports': 'off', // Ensure import paths are succinct as possible 'import/no-relative-packages': 'error', 'import/no-useless-path-segments': [ 'error', { noUselessIndex: true, commonjs: false, }, ], // Always require an extension for non-JS/TS files 'import/extensions': [ 'error', 'ignorePackages', { cjs: 'always', cts: 'always', js: 'never', jsx: 'never', json: 'always', mjs: 'always', mts: 'always', ts: 'never', tsx: 'never', }, ], // Dont resolve custom TS paths, but do others 'import/no-unresolved': [ 'error', { commonjs: true, caseSensitive: true, ignore: [scaffold_config_constants_1.TS_PATH_PREFIX_REGEX] }, ], // Avoid using deprecated APIs 'import/no-deprecated': 'error', // Prefer modern ESM and MJS code 'import/no-amd': 'error', 'import/no-commonjs': [ 'error', { allowRequire: true, allowConditionalRequire: true, }, ], 'import/no-import-module-exports': 'error', // Prefer named exports (over default) as they provide a better package setup 'import/no-anonymous-default-export': 'off', 'import/no-default-export': 'warn', 'import/no-named-export': 'off', 'import/prefer-default-export': 'off', // Sort imports and exports deterministicly 'sort-imports': 'off', 'import/order': 'off', 'simple-import-sort/exports': 'warn', 'simple-import-sort/imports': [ 'warn', { groups: [ [ // Side-effects '^\\u0000', // Node built-ins `^(${module_1.builtinModules.join('|')})$`, // React NPM packages '^react', '^@react', // NPM packages '^[a-z]', // Scoped NPM packages '^@[a-z]', // Aliased modules '^:[a-z]', // Parent files '^\\.\\./', // Sibling files '^\\./', // Index file '^\\.$', // Everything else '\\*', ], ], }, ], }, overrides: [ // Allow default exports from package indexes { files: ['**/index.ts', '**/index.tsx', '**/index.cts', '**/index.mts'], rules: { 'import/no-default-export': 'off', }, }, ], }; module.exports = config; //# sourceMappingURL=module.js.map