{"id":40972,"library":"eslint-config-htmlacademy","title":"ESLint Config HTML Academy","description":"ESLint shareable config enforcing the HTML Academy Codeguide. Version 11.0.0, actively maintained with annual breaking releases. Targets ESLint >=10 and Node >=24. Provides six presets (vanilla, typescript, node, node-typescript, react, react-typescript) each with strict stylistic rules, defensive best practices, and modern syntax enforcement. TypeScript presets include ~150 type-aware rules from typescript-eslint. React presets bundle @eslint-react and jsx-a11y rules. Unique features: mandatory kebab-case for JS/TS, PascalCase for JSX/TSX, Node protocol imports enforcement, and monorepo-friendly tsconfig discovery.","status":"active","version":"11.0.0","language":"javascript","source_language":"en","source_url":"https://github.com/htmlacademy/eslint-config-htmlacademy","tags":["javascript","codeguide","config","eslint","htmlacademy","linter"],"install":[{"cmd":"npm install eslint-config-htmlacademy","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-config-htmlacademy","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-config-htmlacademy","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency required at runtime","package":"eslint","optional":false},{"reason":"peer dependency required for TypeScript presets","package":"typescript","optional":true}],"imports":[{"note":"ESM-only; require() fails. Use default import from preset subpath.","wrong":"const preset = require('eslint-config-htmlacademy/vanilla')","symbol":"preset","correct":"import preset from 'eslint-config-htmlacademy/vanilla'"},{"note":"TypeScript presets require tsconfig.json in project root.","wrong":"import preset from 'eslint-config-htmlacademy/typescript' // correct","symbol":"preset (TypeScript)","correct":"import preset from 'eslint-config-htmlacademy/typescript'"},{"note":"Use react-typescript for TypeScript projects; react preset omits type-aware rules.","wrong":"import preset from 'eslint-config-htmlacademy/react'","symbol":"preset (React)","correct":"import preset from 'eslint-config-htmlacademy/react-typescript'"}],"quickstart":{"code":"// eslint.config.js\nimport preset from 'eslint-config-htmlacademy/vanilla';\n\nexport default [\n  {\n    ignores: ['dist/', 'node_modules/'],\n  },\n  ...preset,\n  {\n    files: ['**/*.js'],\n    rules: {\n      'no-console': 'off',\n    },\n  },\n];","lang":"javascript","description":"Create eslint.config.js with the vanilla preset and disable no-console for JS files."},"warnings":[{"fix":"Update Node to >=24 and ESLint to >=10.","message":"Requires ESLint >=10 and Node >=24. Older ESLint and Node versions are incompatible.","severity":"breaking","affected_versions":">=11.0.0"},{"fix":"Use import syntax or dynamic import().","message":"ESM-only package; require() will throw an error.","severity":"breaking","affected_versions":">=10.0.0"},{"fix":"Switch to react-typescript and add tsconfig.json.","message":"The 'react' preset without TypeScript is deprecated; prefer 'react-typescript' for new projects.","severity":"deprecated","affected_versions":">=11.0.0"},{"fix":"Create tsconfig.json or set parserOptions.project in your config.","message":"TypeScript presets require a tsconfig.json in the project root. Monorepos need tsconfig paths configured manually.","severity":"gotcha","affected_versions":">=10.0.0"},{"fix":"Rename files to match pattern: my-component.js or MyComponent.jsx.","message":"File naming rule 'check-file' enforces KEBAB_CASE for .js/.ts and PASCAL_CASE for .jsx/.tsx. Noncompliant files fail lint.","severity":"gotcha","affected_versions":">=11.0.0"},{"fix":"Add import process from 'node:process' to files using process.","message":"Node presets require explicit imports of Node built-ins (e.g., import process from 'node:process'). Global process is no longer allowed.","severity":"breaking","affected_versions":">=11.0.0"},{"fix":"Migrate to eslint.config.js using the provided preset.","message":"ESLint flat config (eslint.config.js) is required; .eslintrc files are not supported.","severity":"deprecated","affected_versions":">=11.0.0"}],"env_vars":null,"search_vec":"'10':23 '11.0.0':14 '150':55 '24':26 'a11y':73 'academi':4,11 'activ':15 'annual':18 'awar':58 'best':46 'break':19 'bundl':66 'case':80 'codeguid':12,97 'config':2,7,98 'defens':45 'discoveri':95 'enforc':8,51,89 'eslint':1,5,22,63,68,99 'eslint-react':67 'featur':76 'friend':93 'html':3,10 'htmlacademi':100 'import':88 'includ':54 'javascript':96 'js/ts':82 'jsx':72 'jsx-a11y':71 'jsx/tsx':85 'kebab':79 'kebab-cas':78 'linter':101 'maintain':16 'mandatori':77 'modern':49 'monorepo':92 'monorepo-friend':91 'node':25,32,34,86 'node-typescript':33 'pascalcas':83 'practic':47 'preset':29,53,65 'protocol':87 'provid':27 'react':36,38,64,69 'react-typescript':37 'releas':20 'rule':44,59,74 'shareabl':6 'six':28 'strict':42 'stylist':43 'syntax':50 'target':21 'tsconfig':94 'type':57 'type-awar':56 'typescript':31,35,39,52,62 'typescript-eslint':61 'uniqu':75 'vanilla':30 'version':13","created_at":"2026-06-04T18:50:09.908881+00:00","updated_at":"2026-06-04T18:50:09.908881+00:00","problems":[{"fix":"Create eslint.config.js with 'import preset from 'eslint-config-htmlacademy/vanilla'; export default [...preset];'","cause":"Missing ESLint config file or incorrect import statement.","error":"Error: Failed to load config 'eslint-config-htmlacademy/vanilla' to extend from."},{"fix":"Add tsconfig.json to project root or set parserOptions.project in config.","cause":"TypeScript preset used without a valid tsconfig.json.","error":"TypeError: Cannot read properties of undefined (reading 'some')"},{"fix":"Rename file to kebab-case, e.g., my-util.js.","cause":"File naming rule check-file rejects non-KEBAB_CASE in .js files.","error":"Error: File '/path/to/file.js' is not in kebab-case."},{"fix":"Add 'import process from 'node:process';' at top of file.","cause":"Node preset forbids globals; process must be imported.","error":"Error: 'process' is not defined. (no-undef)"},{"fix":"Replace require() with import: 'import preset from 'eslint-config-htmlacademy/vanilla';'","cause":"ESLint flat config does not allow require() in config files; use import.","error":"Error: 'require' is not defined. (no-undef)"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/htmlacademy/eslint-config-htmlacademy#readme","github":"https://github.com/htmlacademy/eslint-config-htmlacademy","docs":null,"changelog":null,"pypi":null,"npm":"eslint-config-htmlacademy","openapi_spec":null,"status_page":null,"smithery":null,"categories":["testing"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-04","next_check":"2026-09-02","install_tag":null}}