{"id":19820,"library":"eslint-plugin-lit","title":"eslint-plugin-lit","description":"ESLint plugin for Lit (lit-html / LitElement) providing 23+ lint rules covering attribute names, binding positions, lifecycle super calls, legacy syntax, and more. Stable version 2.2.1, released as needed with minor updates. ESM-only since v2.0.0, requires Node >= 18 and ESLint >= 8. Supports flat config and has recommended shareable config. Differentiated from general ESLint rules by targeting Lit-specific constructs like template literals and LitElement classes, with TypeScript type definitions included.","status":"active","version":"2.2.1","language":"javascript","source_language":"en","source_url":"https://github.com/43081j/eslint-plugin-lit","tags":["javascript","eslint","eslintplugin","lit-html","lit-element","typescript"],"install":[{"cmd":"npm install eslint-plugin-lit","lang":"bash","label":"npm"},{"cmd":"yarn add eslint-plugin-lit","lang":"bash","label":"yarn"},{"cmd":"pnpm add eslint-plugin-lit","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency required to run the plugin","package":"eslint","optional":false}],"imports":[{"note":"ESM-only since v2.0.0; require() will fail. Use dynamic import() if needed.","wrong":"const { configs } = require('eslint-plugin-lit')","symbol":"configs","correct":"import { configs } from 'eslint-plugin-lit'"},{"note":"rules is a named export, not default. Default export exists but is deprecated in favor of named configs.","wrong":"import eslintPluginLit from 'eslint-plugin-lit'","symbol":"rules","correct":"import { rules } from 'eslint-plugin-lit'"},{"note":"Default export is the plugin object but named exports (configs, rules) are preferred.","wrong":"const eslintPluginLit = require('eslint-plugin-lit')","symbol":"default import","correct":"import eslintPluginLit from 'eslint-plugin-lit'"}],"quickstart":{"code":"// eslint.config.js\nimport { configs } from 'eslint-plugin-lit';\n\nexport default [\n  configs['flat/recommended'],\n  {\n    files: ['**/*.js', '**/*.ts'],\n    rules: {\n      'lit/no-legacy-template-syntax': 'error',\n    },\n  },\n];","lang":"typescript","description":"Flat config usage with recommended rules and a custom rule override."},"warnings":[{"fix":"Use import statements or dynamic import() in CommonJS files.","message":"v2.0.0 migrated to ESM-only; require() breaks.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Switch to eslint.config.js with import { configs } from 'eslint-plugin-lit'.","message":"The .eslintrc config format plugin:lit/recommended is deprecated; use flat config (configs['flat/recommended']).","severity":"deprecated","affected_versions":">=2.0.0"},{"fix":"Use import { configs } from 'eslint-plugin-lit' instead of default import.","message":"Default import of the plugin is deprecated; prefer named exports (configs, rules).","severity":"gotcha","affected_versions":">=2.1.1"},{"fix":"Upgrade Node.js to version 18 or higher.","message":"Node < 18 is no longer supported; engine requirement was raised.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Ensure your project uses Lit v2 or later if enabling such rules.","message":"Some rules (e.g., no-legacy-template-syntax) may require Lit v2+; check rule docs.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"search_vec":"'18':45 '2.2.1':31 '23':14 '8':48 'attribut':18 'bind':20 'call':24 'class':73 'config':51,56 'construct':67 'cover':17 'definit':77 'differenti':57 'element':87 'eslint':2,5,47,60,80 'eslint-plugin-lit':1 'eslintplugin':81 'esm':39 'esm-on':38 'flat':50 'general':59 'html':11,84 'includ':78 'javascript':79 'legaci':25 'lifecycl':22 'like':68 'lint':15 'lit':4,8,10,65,83,86 'lit-el':85 'lit-html':9,82 'lit-specif':64 'litel':12,72 'liter':70 'minor':36 'name':19 'need':34 'node':44 'plugin':3,6 'posit':21 'provid':13 'recommend':54 'releas':32 'requir':43 'rule':16,61 'shareabl':55 'sinc':41 'specif':66 'stabl':29 'super':23 'support':49 'syntax':26 'target':63 'templat':69 'type':76 'typescript':75,88 'updat':37 'v2.0.0':42 'version':30","created_at":"2026-04-25T11:19:50.592605+00:00","updated_at":"2026-04-25T11:19:50.592605+00:00","problems":[{"fix":"Change to import statement or use dynamic import: const plugin = await import('eslint-plugin-lit');","cause":"Using require() with eslint-plugin-lit >=2.0.0 which is ESM-only.","error":"Error [ERR_REQUIRE_ESM]: require() of ES Module not supported"},{"fix":"Run npm install eslint-plugin-lit --save-dev","cause":"Plugin not installed or not in node_modules.","error":"ESLint configuration error: Cannot find module 'eslint-plugin-lit'"},{"fix":"Ensure you use import { configs } from 'eslint-plugin-lit' and spread it correctly: export default [configs['flat/recommended'], ...]","cause":"Incorrect import or usage of configs in flat config.","error":"TypeError: configs is not iterable"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":"","cli_version":null,"type":"library","homepage":"https://lit.dev","github":"https://github.com/43081j/eslint-plugin-lit","docs":null,"changelog":null,"pypi":null,"npm":"https://www.npmjs.com/package/eslint-plugin-lit","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-17","next_check":"2026-07-24","install_tag":null}}