{"id":21301,"library":"eslint-config-alloy","title":"eslint-config-alloy","description":"AlloyTeam's progressive ESLint config for React/Vue/TypeScript projects, currently at v5.1.2. It lets Prettier handle style and focuses on logical error detection. Supports TypeScript 5.0 since v5.0.0 (breaking: v4.x for TS 4.0), Vue 3.0 since v3.x. High automation: auto-checks for new rules, deprecated rules, and Prettier overlap. Differentiator: rule-per-directory management enabling documentation generation and test-as-document approach.","status":"active","version":"5.1.2","language":"javascript","source_language":"en","source_url":"https://github.com/AlloyTeam/eslint-config-alloy","tags":["javascript","eslint","eslintrc","eslintconfig","config","alloy","alloyteam","styleguide"],"install":[{"cmd":"npm install eslint-config-alloy","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-config-alloy","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-config-alloy","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required for Babel/React support","package":"@babel/eslint-parser","optional":true},{"reason":"Required for React JSX support","package":"@babel/preset-react","optional":true},{"reason":"Required for TypeScript support","package":"@typescript-eslint/eslint-plugin","optional":false},{"reason":"Required for TypeScript support","package":"@typescript-eslint/parser","optional":false},{"reason":"Core linter peer dependency","package":"eslint","optional":false},{"reason":"Required for React support","package":"eslint-plugin-react","optional":true},{"reason":"Required for Vue support","package":"eslint-plugin-vue","optional":true},{"reason":"Required for TypeScript support","package":"typescript","optional":true},{"reason":"Required for Vue template parsing","package":"vue-eslint-parser","optional":true}],"imports":[{"note":"In ESLint config, you can omit the `eslint-config-` prefix. Use `alloy` instead of full package name.","wrong":"module.exports = { extends: ['eslint-config-alloy'] }","symbol":"eslint-config-alloy","correct":"module.exports = { extends: ['alloy'] }"},{"wrong":"module.exports = { extends: ['alloy/react'] }","symbol":"alloy/react","correct":"module.exports = { extends: ['alloy/react'] }"},{"wrong":"module.exports = { extends: ['alloy/vue'] }","symbol":"alloy/vue","correct":"module.exports = { extends: ['alloy/vue'] }"},{"wrong":"module.exports = { extends: ['alloy/typescript'] }","symbol":"alloy/typescript","correct":"module.exports = { extends: ['alloy/typescript'] }"},{"wrong":"module.exports = { extends: ['alloy/typescript/react'] }","symbol":"alloy/typescript/react","correct":"module.exports = { extends: ['alloy/typescript/react'] }"},{"wrong":"module.exports = { extends: ['alloy/typescript/vue'] }","symbol":"alloy/typescript/vue","correct":"module.exports = { extends: ['alloy/typescript/vue'] }"}],"quickstart":{"code":"// .eslintrc.js\nmodule.exports = {\n  extends: [\n    'alloy',\n    'alloy/typescript',\n  ],\n  env: {\n    // Your environments (which contains globals like __dirname, window, document)\n    // List of available envs: https://eslint.org/docs/user-guide/configuring/language-options#specifying-environments\n    browser: true,\n    node: true,\n    // mocha: true,\n    // jest: true,\n    // jquery: true\n  },\n  globals: {\n    // Your global variables (setting to false means it's not allowed to be reassigned)\n    // myGlobal: false\n  },\n  rules: {\n    // Customize your rules\n  }\n};\n","lang":"javascript","description":"Basic ESLint configuration extending the AlloyTeam TypeScript preset. Customize env, globals, and rules as needed."},"warnings":[{"fix":"Upgrade TypeScript to >=5.0, or stay on eslint-config-alloy@4 for TS 4.x.","message":"eslint-config-alloy v5.0.0 drops TypeScript 4.x support; requires TypeScript 5.0+.","severity":"breaking","affected_versions":">=5.0.0"},{"fix":"Upgrade to Vue 3.0, or use eslint-config-alloy@3 for Vue 2.x.","message":"eslint-config-alloy v4.0.0 drops Vue 2.x support; requires Vue 3.0+.","severity":"breaking","affected_versions":">=4.0.0"},{"fix":"If you rely on this rule, you must add it manually to your project's .eslintrc.","message":"The rule `react/jsx-sort-default-props` was removed in v5.0.0.","severity":"deprecated","affected_versions":">=5.0.0"},{"fix":"Run: npm install --save-dev @typescript-eslint/parser @typescript-eslint/eslint-plugin","message":"When using TypeScript, you must install both `@typescript-eslint/parser` and `@typescript-eslint/eslint-plugin` as peer dependencies. Not installing the plugin will cause ESLint to throw an error.","severity":"gotcha","affected_versions":">=5.0.0"},{"fix":"If you need `no-undef` in JS files, ensure you're using a separate config for JS files that does not include the TypeScript preset.","message":"The config disables `no-undef` in TypeScript files (since TS handles that). This can mask real issues if you have JavaScript files in a mixed project.","severity":"gotcha","affected_versions":">=4.6.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"npm install --save-dev @typescript-eslint/eslint-plugin","cause":"Missing peer dependency for TypeScript support.","error":"Error: Failed to load plugin '@typescript-eslint' declared in '.eslintrc.js': Cannot find module '@typescript-eslint/eslint-plugin'"},{"fix":"npm install --save-dev vue-eslint-parser eslint-plugin-vue","cause":"Missing peer dependency when using Vue config.","error":"Error: Cannot find module 'vue-eslint-parser'"},{"fix":"npm install --save-dev @babel/eslint-parser @babel/preset-react","cause":"Missing @babel/eslint-parser when using React config.","error":"Error: Failed to load parser '@babel/eslint-parser' declared in '.eslintrc.js'"},{"fix":"Use extends: ['alloy', 'alloy/typescript']","cause":"Using a string instead of array for extends, or missing the base 'alloy' config.","error":"Error: ESLint configuration in `.eslintrc.js` is invalid: Unexpected top-level property \"extends\" value \"alloy/typescript\""}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}