CINXE.COM
Find and fix problems in your JavaScript code - ESLint - Pluggable JavaScript Linter
<!DOCTYPE html> <html lang="en" class="no-js"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="apple-mobile-web-app-title" content="ESLint"> <!-- SEO --> <title>Find and fix problems in your JavaScript code - ESLint - Pluggable JavaScript Linter</title> <meta name="description" content="A pluggable and configurable linter tool for identifying and reporting on patterns in JavaScript. Maintain your code quality with ease. "><link rel="canonical" href="https://eslint.org/"><!-- Feed --> <link rel="alternate" href="/feed.xml" title="ESLint RSS" type="application/atom+xml"> <!-- favicon --> <link rel="icon" href="/favicon.ico" sizes="any"><!-- 32×32 --> <link rel="icon" href="/icon.svg" type="image/svg+xml"> <link rel="apple-touch-icon" href="/apple-touch-icon.png"><!-- 180×180 --> <link rel="manifest" href="/manifest.webmanifest"> <!-- social sharing previews. Make sure every page template has title, desc, and cover url --> <!-- Open graph --> <meta property="og:title" content="Find and fix problems in your JavaScript code - ESLint - Pluggable JavaScript Linter"> <meta property="og:description" content="A pluggable and configurable linter tool for identifying and reporting on patterns in JavaScript. Maintain your code quality with ease. "> <meta property="og:image" content="https://eslint.org/icon-512.png" /> <meta property="og:image:alt" content="ESLint logo"> <meta property="og:locale" content="en_US"> <meta property="og:type" content="website"> <meta property="og:url" content="https://eslint.org/"> <!-- Twitter --> <meta name="twitter:title" content="Find and fix problems in your JavaScript code - ESLint - Pluggable JavaScript Linter"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:site" content="@geteslint"> <meta name="twitter:description" content="A pluggable and configurable linter tool for identifying and reporting on patterns in JavaScript. Maintain your code quality with ease. "> <meta name="twitter:image" content="https://eslint.org/icon-512.png"> <meta name="twitter:creator" content="@geteslint"> <script> // This is a capable browser, let's improve the UI further! document.documentElement.classList.add("enhanced"); document.documentElement.classList.remove('no-js'); </script> <link rel="preload" href="/assets/fonts/Consolas.woff" as="font" type="font/woff" crossorigin> <link rel="preload" href="/assets/fonts/SpaceGrotesk-Medium-subset.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="/assets/fonts/Inter-Regular-subset.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="/assets/fonts/SpaceMono-Regular-subset.woff2" as="font" type="font/woff2" crossorigin> <link rel="preconnect" href="https://www.googletagmanager.com/"> <link rel="dns-prefetch" href="https://cdnjs.cloudflare.com"> <link rel="dns-prefetch" href="https://images.opencollective.com"> <link rel="dns-prefetch" href="https://cdn.jsdelivr.net"> <link rel="dns-prefetch" href="https://unpkg.com"> <script> (function () { var theme = window.localStorage.getItem("theme"); if (theme && theme !== "system") document.documentElement.setAttribute('data-theme', theme) else if (window.matchMedia('(prefers-color-scheme: dark)').matches) document.documentElement.setAttribute('data-theme', 'dark'); else document.documentElement.setAttribute('data-theme', 'light'); })(); </script> <style> /* Overrides for funky punctuators */ @font-face { font-family: "Mono Punctuators"; src: url("/assets/fonts/Consolas.woff") format("woff"); font-weight: 400; unicode-range: U+40, U+7B, U+7D, U+28, U+29; font-display: swap; } /* Space Grotesk for headings */ @font-face { font-family: "Space Grotesk"; src: url("/assets/fonts/SpaceGrotesk-Medium-subset.woff2") format("woff2"), url("/assets/fonts/SpaceGrotesk-Medium-subset.zopfli.woff") format("woff"); font-weight: 500; font-display: swap; } /* Inter for body text */ @font-face { font-family: "Inter"; src: url("/assets/fonts/Inter-Regular-subset.woff2") format("woff2"), url("/assets/fonts/Inter-Regular-subset.zopfli.woff") format("woff"); font-weight: 400; font-display: swap; } @font-face { font-family: Inter; src: url("/assets/fonts/Inter-SemiBold-subset.woff2") format("woff2"), url("/assets/fonts/Inter-SemiBold-subset.zopfli.woff") format("woff"); font-weight: 500; font-style: "normal"; font-display: "swap"; } /* Space Mono for code snippets */ @font-face { font-family: "Space Mono"; src: url("/assets/fonts/SpaceMono-Regular-subset.woff2") format("woff2"), url("/assets/fonts/SpaceMono-Regular-subset.zopfli.woff") format("woff"); font-weight: 400; font-display: swap; } /* Country Flags for Windows*/ @font-face { font-family: 'Twemoji Country Flags'; unicode-range: U+1F1E6-1F1FF, U+1F3F4, U+E0062-E0063, U+E0065, U+E0067, U+E006C, U+E006E, U+E0073-E0074, U+E0077, U+E007F; src: url('https://cdn.jsdelivr.net/npm/country-flag-emoji-polyfill@0.1/dist/TwemojiCountryFlags.woff2') format('woff2'); } </style> <script src="/assets/js/themes.js"></script><link rel="stylesheet" type="text/css" href="/assets/css/styles.css"> </head> <body class="homepage"> <div class="deprecation-notice"> <svg class="hourglass-icon" fill="#ffffff" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="15px" height="15px" viewBox="796 796 200 200" enable-background="new 796 796 200 200" xml:space="preserve"> <g id="SVGRepo_bgCarrier" stroke-width="0"></g> <g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g> <g id="SVGRepo_iconCarrier"> <g> <path d="M939.738,967.044c-2.866-16.875-12.071-32.797-25.945-42.713c-7.738-5.529-13.828-8.004-17.793-8.004 c-3.966,0-10.056,2.475-17.794,8.004c-13.875,9.916-23.08,25.838-25.946,42.713c-0.203,1.199,0.132,2.426,0.917,3.354 c0.784,0.928,1.938,1.462,3.153,1.462h79.338c1.214,0,2.365-0.536,3.149-1.463C939.602,969.469,939.941,968.241,939.738,967.044z"> </path> <path d="M966.479,980.01h-5.077v-9.202c0-27.228-13.174-53.007-35.243-68.963l-8.084-5.843l8.084-5.847 c22.067-15.952,35.243-41.732,35.243-68.961v-9.203h5.077c4.415,0,7.995-3.58,7.995-7.996c0-4.415-3.58-7.995-7.995-7.995H825.522 c-4.416,0-7.996,3.58-7.996,7.995c0,4.416,3.58,7.996,7.996,7.996h5.074v11.397c0,23.987,13.374,48.915,35.775,66.679l7.485,5.936 l-7.485,5.934c-22.401,17.763-35.775,42.688-35.775,66.678v11.396h-5.074c-4.416,0-7.996,3.579-7.996,7.995 c0,4.415,3.58,7.995,7.996,7.995h140.956c4.415,0,7.995-3.58,7.995-7.995C974.474,983.589,970.894,980.01,966.479,980.01z M842.59,968.614c0-20.361,11.677-41.774,31.233-57.28l7.791-6.177c2.812-2.232,4.423-5.568,4.423-9.155 c0-3.59-1.613-6.928-4.425-9.157l-7.789-6.176c-19.557-15.508-31.233-36.921-31.233-57.281v-5.544c0-3.232,2.621-5.853,5.854-5.853 h95.112c3.232,0,5.853,2.621,5.853,5.853v3.35c0,23.391-11.317,45.537-30.277,59.242l-8.429,6.097 c-3.03,2.19-4.839,5.73-4.839,9.47c0,3.738,1.809,7.279,4.84,9.472l8.429,6.091c18.959,13.707,30.276,35.854,30.276,59.243v3.349 c0,3.232-2.62,5.854-5.853,5.854h-95.112c-3.232,0-5.854-2.621-5.854-5.854V968.614L842.59,968.614z"> </path> </g> </g> </svg> ESLint v8.x reached end-of-life on 2024-10-05 and is no longer maintained. <a href="/docs/latest/use/migrate-to-9.0.0"> Upgrade </a> or consider <a href="/version-support/"> long-term support options </a> </div> <a href="#main" class="c-btn c-btn--primary" id="skip-link">Skip to main content</a> <header class="site-header"> <div class="content-container"> <a href="/" aria-label="Homepage" class="logo-link"> <div class="logo"> <svg class="brand-logo" width="203" height="58" viewBox="0 0 203 58" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="ESLint logo"> <path d="M46.5572 21.1093L34.0167 13.8691C33.7029 13.6879 33.3161 13.6879 33.0023 13.8691L20.4616 21.1093C20.148 21.2905 19.9543 21.6253 19.9543 21.9878V36.4681C19.9543 36.8304 20.148 37.1654 20.4616 37.347L33.0023 44.5871C33.3161 44.7684 33.7029 44.7684 34.0167 44.5871L46.5572 37.347C46.871 37.1657 47.0644 36.8306 47.0644 36.4681V21.9878C47.0641 21.6253 46.8707 21.2905 46.5572 21.1093Z" fill="#8080F2" id="logo-center" class="logo-component" /> <path d="M0.904381 27.7046L15.8878 1.63772C16.4321 0.695223 17.4375 0 18.5258 0H48.4931C49.5817 0 50.5873 0.695223 51.1316 1.63772L66.115 27.6471C66.6593 28.5899 66.6593 29.7796 66.115 30.7224L51.1316 56.5756C50.5873 57.5181 49.5817 58 48.4931 58H18.526C17.4377 58 16.4321 57.5326 15.8881 56.5899L0.90464 30.6944C0.359854 29.7522 0.359854 28.6471 0.904381 27.7046ZM13.3115 40.2393C13.3115 40.6225 13.5422 40.977 13.8744 41.1689L32.96 52.1803C33.2919 52.3719 33.7078 52.3719 34.0397 52.1803L53.1401 41.1689C53.4721 40.977 53.7043 40.6228 53.7043 40.2393V18.2161C53.7043 17.8327 53.4754 17.4785 53.1432 17.2866L34.0584 6.27513C33.7264 6.08327 33.3111 6.08327 32.9792 6.27513L13.8775 17.2866C13.5453 17.4785 13.3115 17.8327 13.3115 18.2161V40.2393V40.2393Z" fill="#4B32C3" class="logo-component" /> <path d="M86.6971 43.7102V14.2899H105.442V18.871H91.7826V26.6044H104.265V31.1855H91.7826V39.129H105.652V43.7102H86.6971Z" fill="#101828" class="logo-component logo-title" /> <path d="M118.919 44.2986C116.678 44.2986 114.688 43.9063 112.951 43.1218C111.242 42.3092 109.897 41.1464 108.916 39.6334C107.936 38.1203 107.445 36.271 107.445 34.0855V32.9928H112.447V34.0855C112.447 36.0189 113.035 37.4619 114.212 38.4145C115.389 39.3672 116.958 39.8435 118.919 39.8435C120.909 39.8435 122.408 39.4372 123.416 38.6247C124.425 37.8121 124.929 36.7614 124.929 35.4725C124.929 34.6039 124.691 33.9034 124.215 33.371C123.739 32.8107 123.038 32.3623 122.113 32.0261C121.217 31.6899 120.124 31.3677 118.835 31.0594L117.574 30.8073C115.641 30.359 113.96 29.7986 112.531 29.1261C111.13 28.4256 110.051 27.529 109.295 26.4363C108.538 25.3435 108.16 23.9145 108.16 22.1493C108.16 20.3841 108.58 18.871 109.421 17.6102C110.261 16.3493 111.452 15.3826 112.993 14.7102C114.534 14.0377 116.341 13.7015 118.415 13.7015C120.488 13.7015 122.338 14.0517 123.963 14.7522C125.588 15.4527 126.863 16.5034 127.787 17.9044C128.74 19.3053 129.216 21.0566 129.216 23.158V24.545H124.215V23.158C124.215 21.9532 123.977 20.9865 123.5 20.258C123.024 19.5295 122.352 18.9971 121.483 18.6609C120.614 18.3247 119.592 18.1566 118.415 18.1566C116.678 18.1566 115.361 18.4928 114.464 19.1652C113.568 19.8377 113.119 20.7904 113.119 22.0232C113.119 22.8078 113.315 23.4802 113.708 24.0406C114.128 24.573 114.73 25.0213 115.515 25.3855C116.327 25.7218 117.336 26.016 118.541 26.2681L119.802 26.5623C121.819 27.0107 123.584 27.5851 125.098 28.2855C126.611 28.958 127.787 29.8546 128.628 30.9754C129.497 32.0962 129.931 33.5532 129.931 35.3464C129.931 37.1116 129.469 38.6667 128.544 40.0116C127.647 41.3566 126.372 42.4073 124.719 43.1638C123.094 43.9203 121.161 44.2986 118.919 44.2986Z" fill="#101828" class="logo-component logo-title" /> <path d="M133.1 43.7102V14.2899H138.185V39.129H151.971V43.7102H133.1Z" fill="#101828" class="logo-component logo-title" /> <path d="M154.827 43.7102V22.9479H159.661V43.7102H154.827ZM157.223 20.3C156.354 20.3 155.598 20.0198 154.954 19.4595C154.337 18.871 154.029 18.1005 154.029 17.1479C154.029 16.1952 154.337 15.4387 154.954 14.8783C155.598 14.2899 156.354 13.9957 157.223 13.9957C158.148 13.9957 158.904 14.2899 159.493 14.8783C160.109 15.4387 160.417 16.1952 160.417 17.1479C160.417 18.1005 160.109 18.871 159.493 19.4595C158.904 20.0198 158.148 20.3 157.223 20.3Z" fill="#101828" class="logo-component logo-title" /> <path d="M164.525 43.7102V22.9479H169.275V25.8479H169.989C170.353 25.0633 171.012 24.3208 171.964 23.6203C172.917 22.9198 174.36 22.5696 176.293 22.5696C177.891 22.5696 179.305 22.9338 180.538 23.6623C181.771 24.3909 182.724 25.3995 183.396 26.6884C184.097 27.9773 184.447 29.5044 184.447 31.2696V43.7102H179.614V31.6479C179.614 29.9667 179.193 28.7198 178.353 27.9073C177.54 27.0667 176.377 26.6464 174.864 26.6464C173.155 26.6464 171.81 27.2208 170.83 28.3696C169.849 29.4904 169.359 31.1015 169.359 33.2029V43.7102H164.525Z" fill="#101828" class="logo-component logo-title" /> <path d="M196.449 43.7102C195.104 43.7102 194.025 43.3179 193.213 42.5334C192.428 41.7208 192.036 40.6281 192.036 39.2551V26.9406H186.614V22.9479H192.036V16.2652H196.869V22.9479H202.837V26.9406H196.869V38.4566C196.869 39.2971 197.262 39.7174 198.046 39.7174H202.207V43.7102H196.449Z" fill="#101828" class="logo-component logo-title" /> </svg> </div> </a> <nav class="site-nav" aria-label="Main"> <div class="flexer"> <a href="/donate" class="c-btn c-btn--primary donate-link">Donate</a> <button class="site-nav-toggle" aria-label="Menu" id="nav-toggle"> <svg width="20" height="20" viewBox="20 20 60 60"> <path id="ham-top" d="M30,37 L70,37 Z" stroke="currentColor"></path> <path id="ham-middle" d="M30,50 L70,50 Z" stroke="currentColor"></path> <path id="ham-bottom" d="M30,63 L70,63 Z" stroke="currentColor"></path> </svg> </button> </div> <ul id="nav-list"> <li> <a href="/team" >Team</a> </li> <li> <a href="/blog" >Blog</a> </li> <li> <a href="/docs/latest/" >Docs</a> </li> <li> <a href="https://eslint.threadless.com" target="_blank">Store</a> </li> <li> <a href="/play" target="_blank">Playground</a> </li> </ul> </nav> </div> </header> <main id="main" tabindex="-1"> <section class="section hero hero--homepage"> <div class="content-container grid"> <div class="span-1-7 content-container"> <div class=""> <div class="section-head"> <h1 class="visually-hidden">Find and fix problems in your JavaScript code</h1> <div class="anim"> <script> const ANIMATION_WRONG_WORD = "problmes"; const ANIMATION_CORRECT_WORD = "problems"; </script> <div class="anim__cursorCont" aria-hidden="true"> <div class="anim__cursor anim__cursor--start"></div> </div> <h1 class="section-title h0 anim__title" aria-hidden="true"> <span class="anim__word">Find</span> <span class="anim__word">and</span> <span class="anim__word">fix</span> <span class="anim__word anim__problems"> <span class="anim__text">problems</span> <div class="anim__dropdown"> <img class="anim__dropdown-img anim__dropdown-img--dark" src="/assets/images/dropdown--dark.png" alt="" /> <img class="anim__dropdown-img anim__dropdown-img--light" src="/assets/images/dropdown--light.png" alt="" /> <div class="anim__cursor anim__cursor--end"></div> </div> </span> <span class="anim__word">in</span> <span class="anim__word">your</span> <span class="anim__word">JavaScript</span> <span class="anim__word">code</span> </h1> </div> <p class="section-supporting-text"> ESLint statically analyzes your code to quickly find problems. It is built into most text editors and you can run ESLint as part of your continuous integration pipeline. </p> </div> <div class="eslint-install-code-wrapper"> <div class="eslint-install-code" role="region" aria-labelledby="eslint-installation"> <span hidden id="eslint-installation">ESLint quick install code</span> <button class="eslint-install-code__btn" id="copyBtn" aria-labelledby="copy-button-label"> <span hidden id="copy-button-label">ESLint quick install code</span> <svg width="20" height="20" viewBox="0 0 20 20" class="c-icon" role="img" aria-label="copy" fill="none" focusable="false"> <path d="M4.16667 12.5H3.33333C2.89131 12.5 2.46738 12.3244 2.15482 12.0118C1.84226 11.6993 1.66667 11.2754 1.66667 10.8333V3.33332C1.66667 2.8913 1.84226 2.46737 2.15482 2.15481C2.46738 1.84225 2.89131 1.66666 3.33333 1.66666H10.8333C11.2754 1.66666 11.6993 1.84225 12.0118 2.15481C12.3244 2.46737 12.5 2.8913 12.5 3.33332V4.16666M9.16667 7.49999H16.6667C17.5871 7.49999 18.3333 8.24618 18.3333 9.16666V16.6667C18.3333 17.5871 17.5871 18.3333 16.6667 18.3333H9.16667C8.24619 18.3333 7.5 17.5871 7.5 16.6667V9.16666C7.5 8.24618 8.24619 7.49999 9.16667 7.49999Z" stroke="currentColor" stroke-width="1.66667" stroke-linecap="round" stroke-linejoin="round" /> </svg> </button> <input type="text" id="code-snippet" value="npm init @eslint/config@latest" aria-readonly="true" readonly tabindex="-1" aria-labelledby="eslint-installation"> </div> <span id="eslint-install-code__announcement" class="eslint-install-code__announcement" aria-live="polite" aria-atomic="true"></span> </div> <div class="eslint-actions"> <a href="/docs/latest/use/getting-started" target="_blank" class="c-btn c-btn--primary c-btn--large">Get Started</a> <a href="/donate" class="c-btn c-btn--secondary c-btn--large donate-link">Become a Sponsor</a> </div> <div class="eslint-top-sponsors"> <div class="sponsor-text">Sponsored by:</div> <div class="sponsors"> <a href="https://automattic.com" class="sponsor-link" rel="nofollow noopener sponsored" target="_blank"> <img loading="lazy" decoding="async" src="https://images.opencollective.com/automattic/d0ef3e1/logo.png" height="128" alt="Automattic" title="Automattic" /> </a> <a href="https://www.airbnb.com/" class="sponsor-link" rel="nofollow noopener sponsored" target="_blank"> <img loading="lazy" decoding="async" src="https://images.opencollective.com/airbnb/d327d66/logo.png" height="128" alt="Airbnb" title="Airbnb" /> </a> <a href="https://trunk.io/" class="sponsor-link" rel="nofollow noopener sponsored" target="_blank"> <img loading="lazy" decoding="async" src="https://images.opencollective.com/trunkio/fb92d60/avatar.png" height="128" alt="trunk.io" title="trunk.io" /> </a> <a href="/sponsors">and more...</a> </div> </div> </div> </div> <div class="span-10-12 eslint-versions-col"> <div class="carbon-wrapper"> <!--<br>--> <script id="eslint-sponsor"> if (window.innerWidth > 800) { var s = document.createElement("script"); s.type = "text/javascript"; s.src = "//media.ethicalads.io/media/client/ethicalads.min.js"; document.getElementById("eslint-sponsor").after(s); document.getElementById("eslint-sponsor").remove(); } </script> <div data-ea-publisher="eslint-org" data-ea-type="image"></div> </div> <div class="eslint-versions-container"> <dl class="eslint-versions" aria-labelledby="eslint-versions-title"> <span id="eslint-versions-title" hidden>ESLint Versions</span> <dt>Latest Version</dt> <dd> <svg width="16" height="8" viewBox="0 0 16 8" class="c-icon" role="img" aria-label="npm"> <path d="M0 0.888885H16V6.22222H8V7.11111H4.44444V6.22222H0V0.888885ZM0.888889 5.33333H2.66667V2.66666H3.55556V5.33333H4.44444V1.77777H0.888889V5.33333ZM5.33333 1.77777V6.22222H7.11111V5.33333H8.88889V1.77777H5.33333ZM7.11111 2.66666H8V4.44444H7.11111V2.66666ZM9.77778 1.77777V5.33333H11.5556V2.66666H12.4444V5.33333H13.3333V2.66666H14.2222V5.33333H15.1111V1.77777H9.77778Z" fill="currentColor" /> </svg> <span><a href="https://github.com/eslint/eslint/releases/tag/v9.15.0" class="text-dark no-underline">v9.15.0</a> on 15 Nov</span> </dd> <dt>Upcoming Version</dt> <dd> <svg width="16" height="16" viewBox="0 0 16 16" class="c-icon" role="img" aria-label="Github"> <path d="M8 0.200012C3.6 0.200012 0 3.80001 0 8.20001C0 11.7333 2.26667 14.7333 5.46667 15.8C5.86667 15.8667 6 15.6 6 15.4C6 15.2 6 14.7333 6 14.0667C3.8 14.5333 3.33333 13 3.33333 13C3 12.0667 2.46667 11.8 2.46667 11.8C1.66667 11.3333 2.46667 11.3333 2.46667 11.3333C3.26667 11.4 3.66667 12.1333 3.66667 12.1333C4.4 13.3333 5.53333 13 6 12.8C6.06667 12.2667 6.26667 11.9333 6.53333 11.7333C4.73333 11.5333 2.86667 10.8667 2.86667 7.80001C2.86667 6.93335 3.2 6.20001 3.66667 5.66668C3.66667 5.40001 3.33333 4.60001 3.8 3.53335C3.8 3.53335 4.46667 3.33335 6 4.33335C6.66667 4.13335 7.33333 4.06668 8 4.06668C8.66667 4.06668 9.33333 4.13335 10 4.33335C11.5333 3.26668 12.2 3.53335 12.2 3.53335C12.6667 4.66668 12.3333 5.46668 12.2667 5.66668C12.8 6.20001 13.0667 6.93335 13.0667 7.80001C13.0667 10.8667 11.2 11.5333 9.4 11.7333C9.66667 12 9.93333 12.4667 9.93333 13.2C9.93333 14.2667 9.93333 15.1333 9.93333 15.4C9.93333 15.6 10.0667 15.8667 10.4667 15.8C13.6667 14.7333 15.9333 11.7333 15.9333 8.20001C16 3.80001 12.4 0.200012 8 0.200012Z" fill="currentColor" /> </svg> <span><a class="text-dark">v9.16.0</a> on 29 Nov</span> </dd> <dt>Development</dt> <dd> <svg width="16" height="16" viewBox="0 0 16 16" class="c-icon" role="img" aria-label="Github"> <path d="M8 0.200012C3.6 0.200012 0 3.80001 0 8.20001C0 11.7333 2.26667 14.7333 5.46667 15.8C5.86667 15.8667 6 15.6 6 15.4C6 15.2 6 14.7333 6 14.0667C3.8 14.5333 3.33333 13 3.33333 13C3 12.0667 2.46667 11.8 2.46667 11.8C1.66667 11.3333 2.46667 11.3333 2.46667 11.3333C3.26667 11.4 3.66667 12.1333 3.66667 12.1333C4.4 13.3333 5.53333 13 6 12.8C6.06667 12.2667 6.26667 11.9333 6.53333 11.7333C4.73333 11.5333 2.86667 10.8667 2.86667 7.80001C2.86667 6.93335 3.2 6.20001 3.66667 5.66668C3.66667 5.40001 3.33333 4.60001 3.8 3.53335C3.8 3.53335 4.46667 3.33335 6 4.33335C6.66667 4.13335 7.33333 4.06668 8 4.06668C8.66667 4.06668 9.33333 4.13335 10 4.33335C11.5333 3.26668 12.2 3.53335 12.2 3.53335C12.6667 4.66668 12.3333 5.46668 12.2667 5.66668C12.8 6.20001 13.0667 6.93335 13.0667 7.80001C13.0667 10.8667 11.2 11.5333 9.4 11.7333C9.66667 12 9.93333 12.4667 9.93333 13.2C9.93333 14.2667 9.93333 15.1333 9.93333 15.4C9.93333 15.6 10.0667 15.8667 10.4667 15.8C13.6667 14.7333 15.9333 11.7333 15.9333 8.20001C16 3.80001 12.4 0.200012 8 0.200012Z" fill="currentColor" /> </svg> <span><a class="text-dark">HEAD</a> on 22 Nov</span> </dd> </dl> <a href="/version-support/">Version Support</a> </div> </div> </div> </section> <section class="section features-section"> <div class="content-container"> <header class="section-head center-text"> <h2 class="section-title h3">The pluggable linting utility for JavaScript and JSX</h2> <p class="section-supporting-text fs-step-0"> ESLint is an open source project that helps you find and fix problems with your JavaScript code. It doesn't matter if you're writing JavaScript in the browser or on the server, with or without a framework, ESLint can help your code live its best life. </p> </header> <div class="section-body features-wrapper grid"> <div class="features span-1-5"><article class="feature"> <h3 class="feature__title">Find issues</h3> <p class="feature__description">ESLint statically analyzes your code to quickly find problems. ESLint is built into most text editors and you can run ESLint as part of your continuous integration pipeline. </p> <a href="/docs/latest/use/getting-started" class="feature__details-link"> Learn more <span class="visually-hidden">about finding issues with ESLint</span> <svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true" focusable="false"> <path d="M4.16667 9.99996H15.8333M15.8333 9.99996L10 4.16663M15.8333 9.99996L10 15.8333" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> </svg> </a> </article><article class="feature"> <h3 class="feature__title">Fix problems automatically</h3> <p class="feature__description">Many problems ESLint finds can be automatically fixed. ESLint fixes are syntax-aware so you won't experience errors introduced by traditional find-and-replace algorithms. </p> <a href="/docs/latest/use/command-line-interface#fix-problems" class="feature__details-link"> Learn more <span class="visually-hidden">about fixing problems automatically with ESLint</span> <svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true" focusable="false"> <path d="M4.16667 9.99996H15.8333M15.8333 9.99996L10 4.16663M15.8333 9.99996L10 15.8333" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> </svg> </a> </article><article class="feature"> <h3 class="feature__title">Configure everything</h3> <p class="feature__description">Preprocess code, use custom parsers, and write your own rules that work alongside ESLint's built-in rules. Customize ESLint to work exactly the way you need it for your project. </p> <a href="/docs/latest/use/configure/" class="feature__details-link"> Learn more <span class="visually-hidden">about configuring ESLint</span> <svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true" focusable="false"> <path d="M4.16667 9.99996H15.8333M15.8333 9.99996L10 4.16663M15.8333 9.99996L10 15.8333" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> </svg> </a> </article></div> <div class="features-image span-7-12"> <picture><source type="image/webp" srcset="/assets/images/eslint-features-img-600w.webp 600w, /assets/images/eslint-features-img-900w.webp 900w" sizes="(max-width: 768px) 100vw, 50vw"><source type="image/jpeg" srcset="/assets/images/eslint-features-img-600w.jpeg 600w, /assets/images/eslint-features-img-900w.jpeg 900w" sizes="(max-width: 768px) 100vw, 50vw"><img alt="Screenshot of a Visual Studio code window with ESLint in action: underlining ESLint error in the editor." class="undefined" loading="lazy" decoding="async" src="/assets/images/eslint-features-img-600w.jpeg" width="900" height="848"></picture> </div> </div> </div> </section> <section> <div class="content-container divider"> <header class="section-head center-text"> <h2 class="section-title h3" id="latest-posts-label">News and Updates</h2> <p class="section-supporting-text fs-step-0"> The latest ESLint news, case studies, tutorials, and resources. </p> </header> <div class="blog-posts"> <!-- temporary until I can go through an update all the posts--> <article class='card '><a href="/blog/2024/11/eslint-v9.15.0-released/" class="card__cover" tabindex="-1"><picture><source type="image/webp" srcset="/assets/images/release-notes-minor-560w.webp 560w" sizes="(max-width: 768px) 100vw, 50vw"><img alt="ESLint v9.15.0 released" class="undefined" loading="lazy" decoding="async" src="/assets/images/release-notes-minor-560w.jpeg" width="560" height="368"></picture></a> <div class="card__content"> <div class="badge-group"> <span class="blog-post__category"> <span class="visually-hidden">Published under:</span> Release Notes </span> <span class="blog-post__reading-time"> 2 min read </span> </div> <h3 class="card__title"> <a href="/blog/2024/11/eslint-v9.15.0-released/"> ESLint v9.15.0 released</a> </h3> <p class="card__teaser"> We just pushed ESLint v9.15.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. </p> <div class="card__footer"> <img class="blog-post__author-photo" src="https://avatars.githubusercontent.com/u/44349756?v=4 " alt="Milos Djermanovic" width="40" height="40" loading="lazy"> <div class="blog-post__author__details"> <div class="blog-post__author-name">Milos Djermanovic</div> <time class="blog-post__publish-date" datetime="Fri Nov 15 2024 00:00:00 GMT+0000 (Coordinated Universal Time)">15 Nov, 2024</time> </div> </div> </div> </article> <!-- temporary until I can go through an update all the posts--> <article class='card '><a href="/blog/2024/11/eslint-v9.14.0-released/" class="card__cover" tabindex="-1"><picture><source type="image/webp" srcset="/assets/images/release-notes-minor-560w.webp 560w" sizes="(max-width: 768px) 100vw, 50vw"><img alt="ESLint v9.14.0 released" class="undefined" loading="lazy" decoding="async" src="/assets/images/release-notes-minor-560w.jpeg" width="560" height="368"></picture></a> <div class="card__content"> <div class="badge-group"> <span class="blog-post__category"> <span class="visually-hidden">Published under:</span> Release Notes </span> <span class="blog-post__reading-time"> 2 min read </span> </div> <h3 class="card__title"> <a href="/blog/2024/11/eslint-v9.14.0-released/"> ESLint v9.14.0 released</a> </h3> <p class="card__teaser"> We just pushed ESLint v9.14.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. </p> <div class="card__footer"> <img class="blog-post__author-photo" src="https://avatars.githubusercontent.com/u/44349756?v=4 " alt="Milos Djermanovic" width="40" height="40" loading="lazy"> <div class="blog-post__author__details"> <div class="blog-post__author-name">Milos Djermanovic</div> <time class="blog-post__publish-date" datetime="Fri Nov 01 2024 00:00:00 GMT+0000 (Coordinated Universal Time)">01 Nov, 2024</time> </div> </div> </div> </article> <!-- temporary until I can go through an update all the posts--> <article class='card '><a href="/blog/2024/10/eslint-v9.13.0-released/" class="card__cover" tabindex="-1"><picture><source type="image/webp" srcset="/assets/images/release-notes-minor-560w.webp 560w" sizes="(max-width: 768px) 100vw, 50vw"><img alt="ESLint v9.13.0 released" class="undefined" loading="lazy" decoding="async" src="/assets/images/release-notes-minor-560w.jpeg" width="560" height="368"></picture></a> <div class="card__content"> <div class="badge-group"> <span class="blog-post__category"> <span class="visually-hidden">Published under:</span> Release Notes </span> <span class="blog-post__reading-time"> 1 min read </span> </div> <h3 class="card__title"> <a href="/blog/2024/10/eslint-v9.13.0-released/"> ESLint v9.13.0 released</a> </h3> <p class="card__teaser"> We just pushed ESLint v9.13.0, which is a minor release upgrade of ESLint. This release adds some new features and fixes several bugs found in the previous release. </p> <div class="card__footer"> <img class="blog-post__author-photo" src="https://avatars.githubusercontent.com/u/6367844?v=4 " alt="Francesco Trotta" width="40" height="40" loading="lazy"> <div class="blog-post__author__details"> <div class="blog-post__author-name">Francesco Trotta</div> <time class="blog-post__publish-date" datetime="Fri Oct 18 2024 00:00:00 GMT+0000 (Coordinated Universal Time)">18 Oct, 2024</time> </div> </div> </div> </article> </div> <div class="center-text"> <a href="/blog/" class="c-btn c-btn--primary">View all posts</a> </div> </div> </section> <section> <div class="content-container divider community-section"> <header class="section-head center-text"> <h2 class="section-title h3">Welcome to the community</h2> <p class="section-supporting-text fs-step-0"> ESLint is the #1 JavaScript linter by downloads on npm (over 52.8M downloads / week) and is used at companies like Microsoft, Airbnb, Netflix, and Facebook. </p> </header> <div class="metrics center-text"> <div class="metrics__item"> <span class="metrics__value">23.1M</span> <span>Dependents</span> </div> <div class="metrics__item"> <span class="metrics__value">52.8M</span> <span>Weekly Downloads</span> </div> <div class="metrics__item"> <span class="metrics__value">25.1K</span> <span>Stars</span> </div> </div> </div> </section> <section> <div class="content-container divider"> <header class="section-head center-text"> <h2 class="section-title h3">Sponsored by fantastic people</h2> <p class="section-supporting-text fs-step-0"> We receive $130,635.44 / year in donations from 200 sponsors. </p> </header> <div class="grid"> <ul role="list" class="sponsors span-4-9"> <li> <a href="https://automattic.com" class="sponsor-link" rel="nofollow noopen sponsored" target="_blank"> <img src="https://images.opencollective.com/automattic/d0ef3e1/logo.png" alt="Automattic is donating $2,000.00 each month" title="Automattic is donating $2,000.00 each month" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://www.airbnb.com/" class="sponsor-link" rel="nofollow noopen sponsored" target="_blank"> <img src="https://images.opencollective.com/airbnb/d327d66/logo.png" alt="Airbnb is donating $2,000.00 each month" title="Airbnb is donating $2,000.00 each month" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://trunk.io/" class="sponsor-link" rel="nofollow noopen sponsored" target="_blank"> <img src="https://images.opencollective.com/trunkio/fb92d60/avatar.png" alt="trunk.io is donating $1,000.00 each month" title="trunk.io is donating $1,000.00 each month" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://www.serptriumph.com/" class="sponsor-link" rel="nofollow noopen sponsored" target="_blank"> <img src="https://images.opencollective.com/serp-triumph5/fea3074/logo.png" alt="SERP Triumph is donating $500.00 each month" title="SERP Triumph is donating $500.00 each month" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://www.jetbrains.com/" class="sponsor-link" rel="nofollow noopen sponsored" target="_blank"> <img src="https://images.opencollective.com/jetbrains/fe76f99/logo.png" alt="JetBrains is donating $500.00 each month" title="JetBrains is donating $500.00 each month" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://liftoff.io/" class="sponsor-link" rel="nofollow noopen sponsored" target="_blank"> <img src="https://images.opencollective.com/liftoff/5c4fa84/logo.png" alt="Liftoff is donating $500.00 each month" title="Liftoff is donating $500.00 each month" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://americanexpress.io" class="sponsor-link" rel="nofollow noopen sponsored" target="_blank"> <img src="https://avatars.githubusercontent.com/u/3853301?v=4" alt="American Express is donating $500.00 each month" title="American Express is donating $500.00 each month" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://www.workleap.com" class="sponsor-link" rel="nofollow noopen sponsored" target="_blank"> <img src="https://avatars.githubusercontent.com/u/53535748?u=d1e55d7661d724bf2281c1bfd33cb8f99fe2465f&v=4" alt="Workleap is donating $500.00 each month" title="Workleap is donating $500.00 each month" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://cybozu.co.jp/" class="sponsor-link" rel="nofollow noopen sponsored" target="_blank"> <img src="https://images.opencollective.com/cybozu/933e46d/logo.png" alt="Cybozu is donating $350.00 each month" title="Cybozu is donating $350.00 each month" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://syntax.fm" class="sponsor-link" rel="nofollow noopen sponsored" target="_blank"> <img src="https://github.com/syntaxfm.png" alt="Syntax is donating $319.22 each month" title="Syntax is donating $319.22 each month" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://www.wordhint.net/" class="sponsor-link" rel="nofollow noopen sponsored" target="_blank"> <img src="https://images.opencollective.com/wordhint/be86813/avatar.png" alt="WordHint is donating $200.00 each month" title="WordHint is donating $200.00 each month" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://www.crosswordsolver.org/anagram-solver/" class="sponsor-link" rel="nofollow noopen sponsored" target="_blank"> <img src="https://images.opencollective.com/anagram-solver/2666271/logo.png" alt="Anagram Solver is donating $200.00 each month" title="Anagram Solver is donating $200.00 each month" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://icons8.com/" class="sponsor-link" rel="nofollow noopen sponsored" target="_blank"> <img src="https://images.opencollective.com/icons8/7fa1641/logo.png" alt="Icons8 is donating $200.00 each month" title="Icons8 is donating $200.00 each month" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://discord.com" class="sponsor-link" rel="nofollow noopen sponsored" target="_blank"> <img src="https://images.opencollective.com/discordapp/f9645d9/logo.png" alt="Discord is donating $200.00 each month" title="Discord is donating $200.00 each month" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://www.gitbook.com" class="sponsor-link" rel="nofollow noopen sponsored" target="_blank"> <img src="https://avatars.githubusercontent.com/u/7111340?v=4" alt="GitBook is donating $200.00 each month" title="GitBook is donating $200.00 each month" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://nx.dev" class="sponsor-link" rel="nofollow noopen sponsored" target="_blank"> <img src="https://avatars.githubusercontent.com/u/23692104?v=4" alt="Nx is donating $200.00 each month" title="Nx is donating $200.00 each month" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://herocoders.com" class="sponsor-link" rel="nofollow noopen sponsored" target="_blank"> <img src="https://avatars.githubusercontent.com/u/37549774?v=4" alt="HeroCoders is donating $200.00 each month" title="HeroCoders is donating $200.00 each month" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://netlify.com"> <img src="/assets/images/techsponsors/netlify-icon.svg" alt="Hosting provided by Netlify" title="Hosting provided by Netlify" width="48" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://algolia.com"> <img src="/assets/images/techsponsors/algolia-icon.svg" alt="Search provided by Algolia" title="Search provided by Algolia" width="48" height="48" loading="lazy" decoding="async" /> </a> </li> <li> <a href="https://1password.com"> <img src="/assets/images/techsponsors/1password-icon.svg" alt="Password management provided by 1Password" title="Password management provided by 1Password" width="48" height="48" loading="lazy" decoding="async" /> </a> </li> </ul> <div class="center-text"><a href="/sponsors/" class="c-btn c-btn--primary">View all sponsors</a></div> </div> <div class="grid"> <div class="span-3-10"> <h3 class="donations-title span-5-8" id="donations-label">Recent One-time Donations</h3> <ul role="list" class="donations-list" role="region" tabindex="-1" aria-labelledby="donations-label"> <li class="donations-item"> <div class="donation"> <img class="donation__sponsor-logo" src="https://images.opencollective.com/fbopensource/e10726f/logo.png" width="40" height="40" alt="Meta Open Source" onerror="this.src = '/assets/images/people/_placeholder-avatar.svg'" loading="lazy"/> <div class="donation__content"> <p class="donation__sponsor-name">Meta Open Source</p> <p class="donation__date">November 22, 2024</p> </div> <div class="donation__amount"> + $20,000.00 </div> </div> </li> <li class="donations-item"> <div class="donation"> <img class="donation__sponsor-logo" src="https://avatars.githubusercontent.com/u/99850249?u=0bfa2c984bcee6481e2e0a73f8096f1348c1b602&v=4" width="40" height="40" alt="Cícero Gomes" onerror="this.src = '/assets/images/people/_placeholder-avatar.svg'" loading="lazy"/> <div class="donation__content"> <p class="donation__sponsor-name">Cícero Gomes</p> <p class="donation__date">November 18, 2024</p> </div> <div class="donation__amount"> + $1.00 </div> </div> </li> <li class="donations-item"> <div class="donation"> <img class="donation__sponsor-logo" src="https://images.opencollective.com/sanity_io/558f87f/logo.png" width="40" height="40" alt="Sanity" onerror="this.src = '/assets/images/people/_placeholder-avatar.svg'" loading="lazy"/> <div class="donation__content"> <p class="donation__sponsor-name">Sanity</p> <p class="donation__date">November 12, 2024</p> </div> <div class="donation__amount"> + $2,400.00 </div> </div> </li> <li class="donations-item"> <div class="donation"> <img class="donation__sponsor-logo" src="https://avatars.githubusercontent.com/u/115661003?u=b5612957e02e68645dc72cd2e97189de21b14183&v=4" width="40" height="40" alt="Viktor Svertoka" onerror="this.src = '/assets/images/people/_placeholder-avatar.svg'" loading="lazy"/> <div class="donation__content"> <p class="donation__sponsor-name">Viktor Svertoka</p> <p class="donation__date">November 10, 2024</p> </div> <div class="donation__amount"> + $5.00 </div> </div> </li> <li class="donations-item"> <div class="donation"> <img class="donation__sponsor-logo" src="https://avatars.githubusercontent.com/u/103005378?u=70e1dd277d05da7ca59825d8343b620bc35871df&v=4" width="40" height="40" alt="Alexandre" onerror="this.src = '/assets/images/people/_placeholder-avatar.svg'" loading="lazy"/> <div class="donation__content"> <p class="donation__sponsor-name">Alexandre</p> <p class="donation__date">November 8, 2024</p> </div> <div class="donation__amount"> + $1.00 </div> </div> </li> <li class="donations-item"> <div class="donation"> <img class="donation__sponsor-logo" src="https://avatars.githubusercontent.com/u/169340344?u=d868988c5544a20f915ba596e8b22d7ca369f168&v=4" width="40" height="40" alt="Wildy Sheverando" onerror="this.src = '/assets/images/people/_placeholder-avatar.svg'" loading="lazy"/> <div class="donation__content"> <p class="donation__sponsor-name">Wildy Sheverando</p> <p class="donation__date">November 6, 2024</p> </div> <div class="donation__amount"> + $1.00 </div> </div> </li> </ul> </div> <div class="center-text"> <a href="/sponsors/#donations" class="c-btn c-btn--secondary">View all donations</a> </div> </div> </div> </section> <section aria-labelledby="testimonials-section-label"> <h2 class="visually-hidden">testimonials</h2> <div class="content-container"> <div class="c-slider c-slider--testimonials" data-slider data-aria-label="Testimonials"> <div class="c-slider__slides-container" data-slides> <div class="c-slider__slides-wrapper" data-slides-wrapper><div class="c-slider__slide focusable" data-slide> <blockquote class="c-slider__testimonial span-1-6"> <div class="c-slider__testimonial__content"> <p>ESLint has been critical in helping developers write high-quality JavaScript for years. We love that it catches common issues early and often. With a high level of extensibility, ESLint's ability to let teams enforce custom rules that work for them has been excellent for open-source projects and more. Chrome is happy to sponsor ESLint to help web developers write consistently high-quality code. It's an essential piece of the modern web development toolkit. </p> </div> <footer class="c-slider__testimonial__footer"> <cite class="profile contributor"> <img class="profile__photo profile__photo--small" src="/assets/images/people/testimonials/small/addy-osmani.jpg" width="48" height="48" alt="Addy Osmani" loading="lazy"> <div class="profile__details"> <span class="c-slider__testimonial__author profile__name">Addy Osmani</span> <span class="c-slider__testimonial__author-role profile__title">Senior Staff Eng. Manager, Chrome</span> </div> </cite> </footer> </blockquote> <div class="span-8-12"> <div class="c-slider__testimonial__img"> <picture><source type="image/webp" srcset="/assets/images/addy-osmani-600w.webp 600w, /assets/images/addy-osmani-900w.webp 900w" sizes="(max-width: 768px) 100vw, 50vw"><source type="image/jpeg" srcset="/assets/images/addy-osmani-600w.jpeg 600w, /assets/images/addy-osmani-900w.jpeg 900w" sizes="(max-width: 768px) 100vw, 50vw"><img alt="Addy Osmani" class="undefined" loading="lazy" decoding="async" src="/assets/images/addy-osmani-600w.jpeg" width="900" height="988"></picture> </div> </div> </div><div class="c-slider__slide focusable" data-slide> <blockquote class="c-slider__testimonial span-1-6"> <div class="c-slider__testimonial__content"> <p>Nx uses ESLint to enforce code quality, library boundaries, and project visibility constraints. ESLint makes Nx more powerful, so on behalf of the Nx.dev community, we're proud to do our part and sponsor ESLint's continued success! </p> </div> <footer class="c-slider__testimonial__footer"> <cite class="profile contributor"> <img class="profile__photo profile__photo--small" src="/assets/images/people/testimonials/small/jeff-cross.jpg" width="48" height="48" alt="Jeff Cross" loading="lazy"> <div class="profile__details"> <span class="c-slider__testimonial__author profile__name">Jeff Cross</span> <span class="c-slider__testimonial__author-role profile__title">Co-founder and Principal Architect, Nx</span> </div> </cite> </footer> </blockquote> <div class="span-8-12"> <div class="c-slider__testimonial__img"> <picture><source type="image/webp" srcset="/assets/images/jeff-cross-600w.webp 600w" sizes="(max-width: 768px) 100vw, 50vw"><img alt="Jeff Cross" class="undefined" loading="lazy" decoding="async" src="/assets/images/jeff-cross-600w.jpeg" width="600" height="600"></picture> </div> </div> </div><div class="c-slider__slide focusable" data-slide> <blockquote class="c-slider__testimonial span-1-6"> <div class="c-slider__testimonial__content"> <p>ESLint is an extremely useful tool for any JavaScript project. This tool allows us to set up consistent code formatting rules adopted by the whole team from the beginning of the project, greatly facilitates code reviews, and makes it easy to integrate new developers into the team. I know I am not alone in appreciating its flexibility and ease-of-use. </p> </div> <footer class="c-slider__testimonial__footer"> <cite class="profile contributor"> <img class="profile__photo profile__photo--small" src="/assets/images/people/testimonials/small/medede-kpatchaa.jpg" width="48" height="48" alt="Médédé Raymond KPATCHAA" loading="lazy"> <div class="profile__details"> <span class="c-slider__testimonial__author profile__name">Médédé Raymond KPATCHAA</span> <span class="c-slider__testimonial__author-role profile__title">Technical Architect, Salesforce</span> </div> </cite> </footer> </blockquote> <div class="span-8-12"> <div class="c-slider__testimonial__img"> <picture><source type="image/webp" srcset="/assets/images/medede-kpatchaa-460w.webp 460w" sizes="(max-width: 768px) 100vw, 50vw"><img alt="Médédé Raymond KPATCHAA" class="undefined" loading="lazy" decoding="async" src="/assets/images/medede-kpatchaa-460w.jpeg" width="460" height="460"></picture> </div> </div> </div><div class="c-slider__slide focusable" data-slide> <blockquote class="c-slider__testimonial span-1-6"> <div class="c-slider__testimonial__content"> <p>Most JavaScript projects directly or transitively depend on ESLint. An Indeed employee nominated ESLint to receive a donation from the FOSS Contributor Fund, and their colleagues clearly agreed. We're happy to support the open source technologies that allow us to develop, protect, and maintain the digital infrastructure that supports our products and helps people get jobs. </p> </div> <footer class="c-slider__testimonial__footer"> <cite class="profile contributor"> <img class="profile__photo profile__photo--small" src="/assets/images/people/testimonials/small/duane-obrien.jpg" width="48" height="48" alt="Duane O'Brien" loading="lazy"> <div class="profile__details"> <span class="c-slider__testimonial__author profile__name">Duane O'Brien</span> <span class="c-slider__testimonial__author-role profile__title">Head of Open Source, Indeed</span> </div> </cite> </footer> </blockquote> <div class="span-8-12"> <div class="c-slider__testimonial__img"> <picture><source type="image/webp" srcset="/assets/images/duane-obrien-600w.webp 600w" sizes="(max-width: 768px) 100vw, 50vw"><img alt="Duane O'Brien" class="undefined" loading="lazy" decoding="async" src="/assets/images/duane-obrien-600w.jpeg" width="600" height="902"></picture> </div> </div> </div><div class="c-slider__slide focusable" data-slide> <blockquote class="c-slider__testimonial span-1-6"> <div class="c-slider__testimonial__content"> <p>ESLint plays a major role in helping us create a safe and consistent experience across a growing number of codebases and engineers. We are grateful for all the open-source projects that are helping us build Contra, and ESLint is the first of many open-source projects that we are committed to back. </p> </div> <footer class="c-slider__testimonial__footer"> <cite class="profile contributor"> <img class="profile__photo profile__photo--small" src="/assets/images/people/testimonials/small/gajus.jpg" width="48" height="48" alt="Gajus Kuizinas" loading="lazy"> <div class="profile__details"> <span class="c-slider__testimonial__author profile__name">Gajus Kuizinas</span> <span class="c-slider__testimonial__author-role profile__title">Co-Founder / CTO, Contra</span> </div> </cite> </footer> </blockquote> <div class="span-8-12"> <div class="c-slider__testimonial__img"> <picture><source type="image/webp" srcset="/assets/images/gajus-600w.webp 600w, /assets/images/gajus-900w.webp 900w" sizes="(max-width: 768px) 100vw, 50vw"><source type="image/jpeg" srcset="/assets/images/gajus-600w.jpeg 600w, /assets/images/gajus-900w.jpeg 900w" sizes="(max-width: 768px) 100vw, 50vw"><img alt="Gajus Kuizinas" class="undefined" loading="lazy" decoding="async" src="/assets/images/gajus-600w.jpeg" width="900" height="900"></picture> </div> </div> </div></div> </div> <div class="c-slider__paddleNav" data-slider-paddlenav hidden> <button class="c-slider__paddleNav__prev" aria-label="Previous Slide" data-prev> <svg width="24" height="24" viewBox="0 0 24 24" aria-hidden="true" focusable="false"> <path d="M19 12H5M5 12L12 19M5 12L12 5" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> </svg> </button> <button class="c-slider__paddleNav__next" aria-label="Next Slide" data-next> <svg width="24" height="24" viewBox="0 0 24 24" aria-hidden="true" focusable="false"> <path d="M5 12H19M19 12L12 5M19 12L12 19" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> </svg> </button> </div> </div> </div> </section> <script> (function() { const copyBtn = document.getElementById('copyBtn'); const copyText = document.getElementById('code-snippet'); const announcement_region = document.getElementById('eslint-install-code__announcement'); copyBtn.removeAttribute('hidden'); copyBtn.onclick = () => { copyText.select(); navigator.clipboard.writeText(copyText.value); announcement_region.innerHTML = "Copied to clipboard."; this.focus(); copyBtn.setAttribute('data-copied', 'true'); setTimeout(() => { copyBtn.removeAttribute('data-copied'); announcement_region.innerHTML = ""; announcement_region.removeAttribute('data-fades-out'); }, 4000); } })(); </script> </main> <footer class="site-footer"> <div class="content-container divider"> <section class="footer-cta center-text"> <div class="logo"> <svg class="brand-logo" width="203" height="58" viewBox="0 0 203 58" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="ESLint logo"> <path d="M46.5572 21.1093L34.0167 13.8691C33.7029 13.6879 33.3161 13.6879 33.0023 13.8691L20.4616 21.1093C20.148 21.2905 19.9543 21.6253 19.9543 21.9878V36.4681C19.9543 36.8304 20.148 37.1654 20.4616 37.347L33.0023 44.5871C33.3161 44.7684 33.7029 44.7684 34.0167 44.5871L46.5572 37.347C46.871 37.1657 47.0644 36.8306 47.0644 36.4681V21.9878C47.0641 21.6253 46.8707 21.2905 46.5572 21.1093Z" fill="#8080F2" id="logo-center" class="logo-component" /> <path d="M0.904381 27.7046L15.8878 1.63772C16.4321 0.695223 17.4375 0 18.5258 0H48.4931C49.5817 0 50.5873 0.695223 51.1316 1.63772L66.115 27.6471C66.6593 28.5899 66.6593 29.7796 66.115 30.7224L51.1316 56.5756C50.5873 57.5181 49.5817 58 48.4931 58H18.526C17.4377 58 16.4321 57.5326 15.8881 56.5899L0.90464 30.6944C0.359854 29.7522 0.359854 28.6471 0.904381 27.7046ZM13.3115 40.2393C13.3115 40.6225 13.5422 40.977 13.8744 41.1689L32.96 52.1803C33.2919 52.3719 33.7078 52.3719 34.0397 52.1803L53.1401 41.1689C53.4721 40.977 53.7043 40.6228 53.7043 40.2393V18.2161C53.7043 17.8327 53.4754 17.4785 53.1432 17.2866L34.0584 6.27513C33.7264 6.08327 33.3111 6.08327 32.9792 6.27513L13.8775 17.2866C13.5453 17.4785 13.3115 17.8327 13.3115 18.2161V40.2393V40.2393Z" fill="#4B32C3" class="logo-component" /> <path d="M86.6971 43.7102V14.2899H105.442V18.871H91.7826V26.6044H104.265V31.1855H91.7826V39.129H105.652V43.7102H86.6971Z" fill="#101828" class="logo-component logo-title" /> <path d="M118.919 44.2986C116.678 44.2986 114.688 43.9063 112.951 43.1218C111.242 42.3092 109.897 41.1464 108.916 39.6334C107.936 38.1203 107.445 36.271 107.445 34.0855V32.9928H112.447V34.0855C112.447 36.0189 113.035 37.4619 114.212 38.4145C115.389 39.3672 116.958 39.8435 118.919 39.8435C120.909 39.8435 122.408 39.4372 123.416 38.6247C124.425 37.8121 124.929 36.7614 124.929 35.4725C124.929 34.6039 124.691 33.9034 124.215 33.371C123.739 32.8107 123.038 32.3623 122.113 32.0261C121.217 31.6899 120.124 31.3677 118.835 31.0594L117.574 30.8073C115.641 30.359 113.96 29.7986 112.531 29.1261C111.13 28.4256 110.051 27.529 109.295 26.4363C108.538 25.3435 108.16 23.9145 108.16 22.1493C108.16 20.3841 108.58 18.871 109.421 17.6102C110.261 16.3493 111.452 15.3826 112.993 14.7102C114.534 14.0377 116.341 13.7015 118.415 13.7015C120.488 13.7015 122.338 14.0517 123.963 14.7522C125.588 15.4527 126.863 16.5034 127.787 17.9044C128.74 19.3053 129.216 21.0566 129.216 23.158V24.545H124.215V23.158C124.215 21.9532 123.977 20.9865 123.5 20.258C123.024 19.5295 122.352 18.9971 121.483 18.6609C120.614 18.3247 119.592 18.1566 118.415 18.1566C116.678 18.1566 115.361 18.4928 114.464 19.1652C113.568 19.8377 113.119 20.7904 113.119 22.0232C113.119 22.8078 113.315 23.4802 113.708 24.0406C114.128 24.573 114.73 25.0213 115.515 25.3855C116.327 25.7218 117.336 26.016 118.541 26.2681L119.802 26.5623C121.819 27.0107 123.584 27.5851 125.098 28.2855C126.611 28.958 127.787 29.8546 128.628 30.9754C129.497 32.0962 129.931 33.5532 129.931 35.3464C129.931 37.1116 129.469 38.6667 128.544 40.0116C127.647 41.3566 126.372 42.4073 124.719 43.1638C123.094 43.9203 121.161 44.2986 118.919 44.2986Z" fill="#101828" class="logo-component logo-title" /> <path d="M133.1 43.7102V14.2899H138.185V39.129H151.971V43.7102H133.1Z" fill="#101828" class="logo-component logo-title" /> <path d="M154.827 43.7102V22.9479H159.661V43.7102H154.827ZM157.223 20.3C156.354 20.3 155.598 20.0198 154.954 19.4595C154.337 18.871 154.029 18.1005 154.029 17.1479C154.029 16.1952 154.337 15.4387 154.954 14.8783C155.598 14.2899 156.354 13.9957 157.223 13.9957C158.148 13.9957 158.904 14.2899 159.493 14.8783C160.109 15.4387 160.417 16.1952 160.417 17.1479C160.417 18.1005 160.109 18.871 159.493 19.4595C158.904 20.0198 158.148 20.3 157.223 20.3Z" fill="#101828" class="logo-component logo-title" /> <path d="M164.525 43.7102V22.9479H169.275V25.8479H169.989C170.353 25.0633 171.012 24.3208 171.964 23.6203C172.917 22.9198 174.36 22.5696 176.293 22.5696C177.891 22.5696 179.305 22.9338 180.538 23.6623C181.771 24.3909 182.724 25.3995 183.396 26.6884C184.097 27.9773 184.447 29.5044 184.447 31.2696V43.7102H179.614V31.6479C179.614 29.9667 179.193 28.7198 178.353 27.9073C177.54 27.0667 176.377 26.6464 174.864 26.6464C173.155 26.6464 171.81 27.2208 170.83 28.3696C169.849 29.4904 169.359 31.1015 169.359 33.2029V43.7102H164.525Z" fill="#101828" class="logo-component logo-title" /> <path d="M196.449 43.7102C195.104 43.7102 194.025 43.3179 193.213 42.5334C192.428 41.7208 192.036 40.6281 192.036 39.2551V26.9406H186.614V22.9479H192.036V16.2652H196.869V22.9479H202.837V26.9406H196.869V38.4566C196.869 39.2971 197.262 39.7174 198.046 39.7174H202.207V43.7102H196.449Z" fill="#101828" class="logo-component logo-title" /> </svg> </div> <div class="section-head centered"> <h2 class="section-title h3">Ready to fix your JavaScript code?</h2> <p class="section-supporting-text"> Install from npm or start donating today. </p> </div> <div class="eslint-actions"> <a href="/docs/latest/use/getting-started" target="_blank" class="c-btn c-btn--primary">Get Started</a> <a href="/donate" class="c-btn c-btn--secondary donate-link">Become a Sponsor</a> </div> </section> </div> <div class="content-container divider footer-middle"> <nav aria-labelledby="eslint-social-label" class="eslint-social-icons"> <h2 id="eslint-social-label" hidden>Social Media</h2> <ul role="list"> <li> <a href="https://twitter.com/geteslint" rel="noopener noreferrer" target="_blank"> <svg viewBox="0 0 512 512" height="25" width="25" class="c-icon" role="img" aria-label="Twitter" fill="currentColor"> <path fill="none" d="M0 0h24v24H0z"></path><path d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"></path> </svg> </a> </li> <li> <a href="https://github.com/eslint/eslint" rel="noopener noreferrer" target="_blank"> <svg width="25" height="24" viewBox="0 0 25 24" class="c-icon" role="img" aria-label="GitHub"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12.5 0.147461C5.9 0.147461 0.5 5.54746 0.5 12.1475C0.5 17.4475 3.9 21.9475 8.7 23.5475C9.3 23.6475 9.5 23.2475 9.5 22.9475C9.5 22.6475 9.5 21.9475 9.5 20.9475C6.2 21.6475 5.5 19.3475 5.5 19.3475C5 17.9475 4.2 17.5475 4.2 17.5475C3 16.8475 4.2 16.8475 4.2 16.8475C5.4 16.9475 6 18.0475 6 18.0475C7.1 19.8475 8.8 19.3475 9.5 19.0475C9.6 18.2475 9.9 17.7475 10.3 17.4475C7.6 17.1475 4.8 16.1475 4.8 11.5475C4.8 10.2475 5.3 9.14746 6 8.34746C6 7.94746 5.5 6.74746 6.2 5.14746C6.2 5.14746 7.2 4.84746 9.5 6.34746C10.5 6.04746 11.5 5.94746 12.5 5.94746C13.5 5.94746 14.5 6.04746 15.5 6.34746C17.8 4.74746 18.8 5.14746 18.8 5.14746C19.5 6.84746 19 8.04746 18.9 8.34746C19.7 9.14746 20.1 10.2475 20.1 11.5475C20.1 16.1475 17.3 17.1475 14.6 17.4475C15 17.8475 15.4 18.5475 15.4 19.6475C15.4 21.2475 15.4 22.5475 15.4 22.9475C15.4 23.2475 15.6 23.6475 16.2 23.5475C21 21.9475 24.4 17.4475 24.4 12.1475C24.5 5.54746 19.1 0.147461 12.5 0.147461Z" fill="currentColor" /> </svg> </a> </li> <li> <a href="https://eslint.org/chat" rel="noopener noreferrer" target="_blank"> <svg width="24" height="25" viewBox="0 0 24 25" class="c-icon" role="img" aria-label="Discord"> <g clip-path="url(#clip0_256:2722)"> <path d="M9.32792 10.1776C8.99458 10.2065 8.68419 10.3594 8.45805 10.606C8.2319 10.8526 8.10645 11.175 8.10645 11.5096C8.10645 11.8442 8.2319 12.1667 8.45805 12.4133C8.68419 12.6599 8.99458 12.8127 9.32792 12.8416C9.4958 12.8347 9.66066 12.7947 9.81307 12.724C9.96548 12.6533 10.1025 12.5532 10.2161 12.4295C10.3298 12.3057 10.418 12.1608 10.4756 12.003C10.5332 11.8451 10.5592 11.6775 10.5519 11.5096C10.5601 11.3416 10.5348 11.1735 10.4776 11.0153C10.4203 10.857 10.3322 10.7117 10.2183 10.5878C10.1044 10.4639 9.9671 10.3639 9.81425 10.2934C9.66141 10.223 9.4961 10.1837 9.32792 10.1776V10.1776ZM13.7079 10.1776C13.4396 10.1549 13.1707 10.2137 12.9364 10.3463C12.702 10.4789 12.5132 10.6792 12.3946 10.9209C12.276 11.1627 12.2332 11.4346 12.2717 11.7011C12.3102 11.9676 12.4283 12.2162 12.6105 12.4145C12.7926 12.6128 13.0305 12.7514 13.2927 12.8123C13.555 12.8731 13.8296 12.8534 14.0805 12.7556C14.3314 12.6578 14.5469 12.4865 14.6988 12.2642C14.8507 12.0419 14.932 11.7789 14.9319 11.5096C14.9392 11.3418 14.9132 11.1741 14.8556 11.0163C14.798 10.8585 14.7098 10.7135 14.5961 10.5898C14.4825 10.4661 14.3455 10.366 14.1931 10.2953C14.0407 10.2246 13.8758 10.1846 13.7079 10.1776V10.1776Z" fill="currentColor" /> <path d="M19.54 0.109619H3.46001C3.13617 0.110406 2.81565 0.174971 2.51677 0.299626C2.21788 0.424282 1.94647 0.606588 1.71804 0.836134C1.4896 1.06568 1.30862 1.33797 1.18542 1.63746C1.06222 1.93695 0.999218 2.25778 1.00001 2.58162V18.8096C0.999218 19.1335 1.06222 19.4543 1.18542 19.7538C1.30862 20.0533 1.4896 20.3256 1.71804 20.5551C1.94647 20.7846 2.21788 20.967 2.51677 21.0916C2.81565 21.2163 3.13617 21.2808 3.46001 21.2816H17.068L16.432 19.0616L17.968 20.4896L19.42 21.8296L22 24.1096V2.58162C22.0008 2.25778 21.9378 1.93695 21.8146 1.63746C21.6914 1.33797 21.5104 1.06568 21.282 0.836134C21.0535 0.606588 20.7821 0.424282 20.4832 0.299626C20.1844 0.174971 19.8638 0.110406 19.54 0.109619V0.109619ZM14.908 15.7816C14.908 15.7816 14.476 15.2656 14.116 14.8096C14.9858 14.6048 15.7552 14.099 16.288 13.3816C15.8562 13.669 15.3933 13.9065 14.908 14.0896C14.3498 14.3279 13.7659 14.501 13.168 14.6056C12.1403 14.7948 11.0863 14.7908 10.06 14.5936C9.45887 14.4755 8.86976 14.3028 8.30001 14.0776C7.81882 13.8938 7.35992 13.6563 6.93201 13.3696C7.44554 14.072 8.18835 14.5728 9.03201 14.7856C8.67201 15.2416 8.23201 15.7856 8.23201 15.7856C7.51919 15.8048 6.81258 15.6485 6.17437 15.3304C5.53616 15.0123 4.9859 14.5423 4.57201 13.9616C4.61037 11.5275 5.20124 9.13395 6.30001 6.96162C7.26643 6.2026 8.44466 5.76234 9.67201 5.70162L9.79201 5.84562C8.63452 6.13043 7.55416 6.66719 6.62801 7.41762C6.62801 7.41762 6.89201 7.27362 7.33601 7.06962C8.19835 6.67451 9.11767 6.41802 10.06 6.30962C10.1259 6.29594 10.1928 6.28791 10.26 6.28562C11.0641 6.18084 11.8779 6.17279 12.684 6.26162C13.9533 6.40712 15.1817 6.79985 16.3 7.41762C15.4231 6.70382 14.4047 6.18437 13.312 5.89362L13.48 5.70162C14.7074 5.76234 15.8856 6.2026 16.852 6.96162C17.9508 9.13395 18.5416 11.5275 18.58 13.9616C18.1624 14.541 17.6096 15.0097 16.9697 15.3269C16.3297 15.6441 15.622 15.8002 14.908 15.7816V15.7816Z" fill="currentColor" /> </g> <defs> <clipPath id="clip0_256:2722"> <rect width="24" height="24" fill="white" transform="translate(0 0.109619)" /> </clipPath> </defs> </svg> </a> </li> <li> <a href="https://fosstodon.org/@eslint" rel="me noopener noreferrer" target="_blank"> <svg width="24" height="25" viewBox="0 0 216.4144 232.00976" class="c-icon" role="img" aria-label="Mastodon"> <path fill="currentColor" d="M211.80734 139.0875c-3.18125 16.36625-28.4925 34.2775-57.5625 37.74875-15.15875 1.80875-30.08375 3.47125-45.99875 2.74125-26.0275-1.1925-46.565-6.2125-46.565-6.2125 0 2.53375.15625 4.94625.46875 7.2025 3.38375 25.68625 25.47 27.225 46.39125 27.9425 21.11625.7225 39.91875-5.20625 39.91875-5.20625l.8675 19.09s-14.77 7.93125-41.08125 9.39c-14.50875.7975-32.52375-.365-53.50625-5.91875C9.23234 213.82 1.40609 165.31125.20859 116.09125c-.365-14.61375-.14-28.39375-.14-39.91875 0-50.33 32.97625-65.0825 32.97625-65.0825C49.67234 3.45375 78.20359.2425 107.86484 0h.72875c29.66125.2425 58.21125 3.45375 74.8375 11.09 0 0 32.975 14.7525 32.975 65.0825 0 0 .41375 37.13375-4.59875 62.915" /> <path fill="var(--lighter-background-color)" d="M177.50984 80.077v60.94125h-24.14375v-59.15c0-12.46875-5.24625-18.7975-15.74-18.7975-11.6025 0-17.4175 7.5075-17.4175 22.3525v32.37625H96.20734V85.42325c0-14.845-5.81625-22.3525-17.41875-22.3525-10.49375 0-15.74 6.32875-15.74 18.7975v59.15H38.90484V80.077c0-12.455 3.17125-22.3525 9.54125-29.675 6.56875-7.3225 15.17125-11.07625 25.85-11.07625 12.355 0 21.71125 4.74875 27.8975 14.2475l6.01375 10.08125 6.015-10.08125c6.185-9.49875 15.54125-14.2475 27.8975-14.2475 10.6775 0 19.28 3.75375 25.85 11.07625 6.36875 7.3225 9.54 17.22 9.54 29.675" /> </svg> </a> </li> </ul> </nav> <div role="region" class="theme-switcher" aria-labelledby="theme-switcher-label" id="js-theme-switcher" hidden> <h2 class="theme-switcher-label visually-hidden" id="theme-switcher-label">Theme Switcher</h2> <div class="theme-switcher__buttons"> <button class="theme-switcher__button js-toggle-button" id="light-theme-toggle" data-theme="light"> <svg class="theme-switcher__icon" focusable="false" width="22" height="22" viewBox="0 0 100 100" aria-hidden="true"><g transform="translate(0,-952.36218)"><path d="m 50,955.36218 c 1.6568,0 3,1.3431 3,3 l 0,16 c 0,1.6569 -1.3432,3 -3,3 -1.6569,0 -3,-1.3431 -3,-3 l 0,-16 c 0,-1.6569 1.3431,-3 3,-3 z m 31.125,12.875 c 0.76777,0 1.50798,0.3205 2.09375,0.9062 1.17159,1.1717 1.17157,3.0472 0,4.2188 l -11.3125,11.3125 c -1.17157,1.1716 -3.04714,1.1716 -4.21875,0 -1.17153,-1.1715 -1.17158,-3.0472 0,-4.2187 L 79,969.14338 c 0.58579,-0.5857 1.35723,-0.9062 2.125,-0.9062 z m -62.25,0 c 0.76777,0 1.53921,0.3205 2.125,0.9062 l 11.3125,11.3126 c 1.17158,1.1715 1.17153,3.0472 0,4.2187 -1.17161,1.1716 -3.04718,1.1716 -4.21875,0 l -11.3125,-11.3125 c -1.17157,-1.1716 -1.17159,-3.0471 0,-4.2188 0.58577,-0.5857 1.32598,-0.9062 2.09375,-0.9062 z M 50,983.36218 c 10.45786,0 19,8.5422 19,19.00002 0,10.4579 -8.54214,19 -19,19 -10.45784,0 -19,-8.5421 -19,-19 0,-10.45792 8.54216,-19.00002 19,-19.00002 z m 0,6 c -7.21516,0 -13,5.7848 -13,13.00002 0,7.2152 5.78484,13 13,13 7.21518,0 13,-5.7848 13,-13 0,-7.21522 -5.78482,-13.00002 -13,-13.00002 z m 44,10 c 1.65686,0 2.99999,1.34322 3,3.00002 -1e-5,1.6569 -1.34315,3 -3,3 l -16,0 c -1.65685,0 -3,-1.3431 -3,-3 0,-1.6568 1.34316,-3.00002 3,-3.00002 l 16,0 z m -72,0 c 1.65684,0 3,1.34322 3,3.00002 0,1.6569 -1.34315,3 -3,3 l -16,0 c -1.65685,0 -2.99999,-1.3431 -3,-3 1e-5,-1.6568 1.34314,-3.00002 3,-3.00002 l 16,0 z m 47.8125,19.81252 c 0.76777,0 1.50797,0.2892 2.09375,0.875 l 11.3125,11.3125 c 1.17158,1.1716 1.17152,3.0472 0,4.2188 -1.1716,1.1715 -3.04718,1.1715 -4.21875,0 l -11.3125,-11.3126 c -1.17157,-1.1715 -1.1716,-3.0471 0,-4.2187 0.58577,-0.5858 1.35723,-0.875 2.125,-0.875 z m -39.625,0 c 0.76777,0 1.53923,0.2892 2.125,0.875 1.1716,1.1716 1.17157,3.0472 0,4.2187 L 21,1035.581 c -1.17157,1.1715 -3.04715,1.1715 -4.21875,0 -1.17152,-1.1716 -1.17158,-3.0472 0,-4.2188 l 11.3125,-11.3125 c 0.58578,-0.5858 1.32598,-0.875 2.09375,-0.875 z M 50,1027.3622 c 1.6568,0 3,1.3431 3,3 l 0,16 c 0,1.6569 -1.3432,3 -3,3 -1.6569,0 -3,-1.3431 -3,-3 l 0,-16 c 0,-1.6569 1.3431,-3 3,-3 z" fill="currentColor" fill-opacity="1" stroke="none"></path></g></svg> <span>Light</span> </button> <button class="theme-switcher__button js-toggle-button" id="system-theme-toggle" data-theme="system"> <svg class="theme-switcher__icon" focusable="false" width="22" height="22" viewBox="0 0 24 24" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-monitor"><rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect><line x1="8" y1="21" x2="16" y2="21"></line><line x1="12" y1="17" x2="12" y2="21"></line></svg> <span>System</span> </button> <button class="theme-switcher__button js-toggle-button" id="dark-theme-toggle" data-theme="dark"> <svg class="theme-switcher__icon" focusable="false" width="22" height="22" viewBox="0 0 100 100" aria-hidden="true"><g transform="translate(0,-952.36218)"><path d="m 35.377874,961.36325 a 3.0003,3.0003 0 0 0 -0.9063,0.1875 c -16.1759,5.9947 -25.4686997,21.7109 -25.4686997,39.59375 0,23.2769 18.9104997,42.2187 42.1873997,42.2187 17.8829,0 33.6304,-9.324 39.625,-25.5 a 3.0003,3.0003 0 0 0 -3.9374,-3.8125 c -4.0936,1.6462 -8.5949,2.5 -13.3438,2.5 -19.5969,0 -37.7188,-18.15315 -37.7188,-37.74995 0,-4.7489 0.8226,-9.2504 2.4688,-13.3437 a 3.0003,3.0003 0 0 0 -2.9062,-4.0938 z m -4.6563,8.7188 c -0.5822,2.8241 -0.9063,5.7363 -0.9063,8.7187 0,23.21085 20.5079,43.74995 43.7188,43.74995 2.9824,0 5.8946,-0.3553 8.7188,-0.9375 -6.2657,10.0487 -17.6431,15.75 -31.0626,15.75 -20.0342,0 -36.1874,-16.1844 -36.1874,-36.2187 0,-13.42105 5.6679,-24.79725 15.7187,-31.06245 z" fill="currentColor" fill-opacity="1" stroke="none"></path></g></svg> <span>Dark</span> </button> </div> </div> <div class="language-switcher"> <a href="/languages/" class="switcher-fallback">Change Language</a> <div hidden role="region" class="switcher switcher--language" aria-labelledby="language-switcher-label" id="language-switcher"> <span id="language-switcher-label" hidden>Language Switcher</span> <div class="infobox visually-hidden" id="language-infobox"> Selecting a language will take you to the ESLint website in that language. </div> <label class="switcher__label" for="language-select"> <span class="label__text"> Language </span> </label> <select name="language selector" id="language-select" aria-describedby="language-infobox" class="c-custom-select switcher__select"> <option value="de" title="German" data-url="https://de.eslint.org/" > 🇩🇪 Deutsch </option> <option value="en" title="English (US)" data-url="https://eslint.org/" selected > 🇺🇸 English (US) </option> <option value="es" title="Spanish" data-url="https://es.eslint.org/" > 🇪🇸 Español (ES) </option> <option value="fr" title="French" data-url="https://fr.eslint.org/" > 🇫🇷 Français </option> <option value="hi" title="Hindi (IN)" data-url="https://hi.eslint.org/" > 🇮🇳 हिन्दी </option> <option value="ja" title="Japanese" data-url="https://ja.eslint.org/" > 🇯🇵 日本語 </option> <option value="pt-br" title="Portuguese (BR)" data-url="https://pt-br.eslint.org/" > 🇧🇷 Português (BR) </option> <option value="zh-hans" title="Simplified Chinese" data-url="https://zh-hans.eslint.org/" > 🇨🇳 简体中文 </option> </select> </div> </div> </div> <div class="content-container footer-legal-section"> <div class="copyright"> <p>Copyright <a href="https://openjsf.org">OpenJS Foundation</a> and ESLint contributors. All rights reserved. The <a href="https://openjsf.org">OpenJS Foundation</a> has registered trademarks and uses trademarks. For a list of trademarks of the <a href="https://openjsf.org">OpenJS Foundation</a>, please see our <a href="https://trademark-policy.openjsf.org">Trademark Policy</a> and <a href="https://trademark-list.openjsf.org">Trademark List</a>. Trademarks and logos not indicated on the <a href="https://trademark-list.openjsf.org">list of OpenJS Foundation trademarks</a> are trademarks™ or registered® trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them. </p> </div> <nav aria-labelledby="footer-legal-links-label" class="footer-legal-links"> <h2 id="footer-legal-links-label" hidden>Secondary</h2> <ul> <li><a href="/branding/">Branding</a></li> <li><a href="https://openjsf.org/">The OpenJS Foundation</a></li> <li><a href="https://terms-of-use.openjsf.org/">Terms of Use</a></li> <li><a href="https://privacy-policy.openjsf.org/">Privacy Policy</a></li> <li><a href="https://bylaws.openjsf.org/">OpenJS Foundation Bylaws</a></li> <li><a href="https://trademark-policy.openjsf.org/">Trademark Policy</a></li> <li><a href="https://trademark-list.openjsf.org/">Trademark List</a></li> <li><a href="https://www.linuxfoundation.org/cookies/">Cookie Policy</a></li> </ul> </nav> </div> </footer> <script src="/assets/js/css-vars-ponyfill@2.js"></script> <script src="/assets/js/focus-visible.js"></script> <script src="/assets/js/main.js"></script> <!--<br>--> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-7DGPHY308T"></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', 'G-7DGPHY308T'); // track clicks to "Donate" document.querySelectorAll("a.donate-link").forEach( el => el.addEventListener("click", () => gtag("event", "donate_click")) ); // track clicks on sponsor logos document.querySelectorAll("a.sponsor-link").forEach( el => el.addEventListener("click", () => gtag("event", "sponsor_click", el.href || "")) ); </script> <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.9.0/gsap.min.js" ></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.9.0/Flip.min.js"></script> <script src="assets/js/animation.js"></script><script src="assets/js/hammer.min.js"></script> <script src="assets/js/slider.js"></script></body> </html>