@perfective/eslint-config
Version:
ESLint shareable rules configuration
45 lines • 2.65 kB
JavaScript
import { configurationFiles, typescriptDeclarationFiles } from "../linter/glob.js";
import { languageOptions } from "../linter/language-options.js";
import { linterConfig } from "../linter/linter-config.js";
import { arrayFuncConfig } from "./array-func/array-func-config.js";
import { eslintConfig } from "./eslint/eslint-config.js";
import { eslintCommentsConfig } from "./eslint-comments/eslint-comments-config.js";
import { importConfig, importJavascriptConfig, importTypescriptConfig } from "./import/import-config.js";
import { importNoExtraneousDependencies } from "./import/index.js";
import { jsdocConfig, jsdocJavascriptConfig } from "./jsdoc/jsdoc-config.js";
import { nodeConfig } from "./node/node-config.js";
import { preferArrowConfig } from "./prefer-arrow/prefer-arrow-config.js";
import { promiseConfig } from "./promise/promise-config.js";
import { securityConfig } from "./security/security-config.js";
import { simpleImportSortConfig } from "./simple-import-sort/simple-import-sort-config.js";
import { stylisticJsConfig } from "./stylistic/js/stylistic-js-config.js";
import { stylisticJsxConfig } from "./stylistic/jsx/stylistic-jsx-config.js";
import { stylisticPlusConfig } from "./stylistic/plus/stylistic-plus-config.js";
import { stylisticTsConfig } from "./stylistic/ts/stylistic-ts-config.js";
import { typescriptEslintConfig } from "./typescript-eslint/typescript-eslint-config.js";
import { unicornConfig } from "./unicorn/unicorn-config.js";
export function perfectiveEslintConfig(configs = []) {
return [{
languageOptions: languageOptions()
}, {
ignores: ['**/dist', typescriptDeclarationFiles]
}, eslintConfig(), typescriptEslintConfig(), arrayFuncConfig(), eslintCommentsConfig(), importConfig(), importJavascriptConfig(), importTypescriptConfig(), jsdocConfig(), jsdocJavascriptConfig(), nodeConfig(), preferArrowConfig(), promiseConfig(), securityConfig(), simpleImportSortConfig(), stylisticJsConfig(), stylisticJsxConfig(), stylisticPlusConfig(), stylisticTsConfig(), unicornConfig(), configurationFilesConfig()].concat(configs.map(linterConfig));
}
function configurationFilesConfig() {
return {
files: configurationFiles,
rules: {
'import/extensions': ['error', 'ignorePackages'],
'import/no-default-export': ['off'],
'import/no-extraneous-dependencies': ['error', importNoExtraneousDependencies({
devDependencies: configurationFiles
})],
'n/no-unpublished-import': ['error', {
allowModules: ['gulp', '@perfective/build'],
convertPath: {
'dist/**/*.js': ['^dist/(.+)?\\.js$', '$1.js']
}
}]
}
};
}