CINXE.COM
ESLint v9.13.0 released - 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>ESLint v9.13.0 released - 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/blog/2024/10/eslint-v9.13.0-released/"><!-- 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="ESLint v9.13.0 released - 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/blog/2024/10/eslint-v9.13.0-released/"> <!-- Twitter --> <meta name="twitter:title" content="ESLint v9.13.0 released - 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="post blog-post-page"> <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" data-current="true" >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> <script src="https://unpkg.com/anchor-js@4.3.1/anchor.min.js" type="text/javascript"></script> <script> document.addEventListener("DOMContentLoaded", () => { anchors.add(".post__blog-content h2, .post__blog-content h3, .post__blog-content h4"); }); </script> <main id="main" class="post-main" tabindex="-1"> <div class="section hero"> <div class="content-container grid"> <div class="span-1-7 content-container"><p class="post__meta">Published <time datetime="18 Oct, 2024">18 Oct, 2024</time> under <a href="/blog/category/release-notes">Release Notes</a></p><h1 class="section-title">ESLint v9.13.0 released</h1> <p class="section-supporting-text"> 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> <div class="span-10-12 hero-ad"> <!--<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> </div> <div class="content-container grid"> <div class="post__blog-content span-5-12"> <h2 id="highlights" tabindex="-1">Highlights</h2> <ul> <li>The predefined array of config objects used by ESLint can be now accessed programmatically as <a href="https://eslint.org/docs/latest/integrate/nodejs-api#-eslintdefaultconfig"><code>ESLint.defaultConfig</code></a>.</li> <li>To speed up loading, the ESLint CLI will automatically enable V8’s code cache in newer versions of Node.js.</li> <li>Custom languages can now provide their default options with the <code>defaultLanguageOptions</code> property. See the documentation about the <a href="https://eslint.org/docs/latest/extend/languages#the-language-object"><code>Language</code> object</a>.</li> </ul> <h2 id="features" tabindex="-1">Features</h2> <ul> <li><a href="https://github.com/eslint/eslint/commit/381c32b6975fa3208c62ca2b1052eb87182ed731"><code>381c32b</code></a> feat: Allow languages to provide <code>defaultLanguageOptions</code> (<a href="https://github.com/eslint/eslint/issues/19003">#19003</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/bf723bd0f948dbfef57f9b34ff894e7603aeaf88"><code>bf723bd</code></a> feat: Improve eslintrc warning message (<a href="https://github.com/eslint/eslint/issues/19023">#19023</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/1def4cdfab1f067c5089df8b36242cdf912b0eb6"><code>1def4cd</code></a> feat: drop support for jiti v1.21 (<a href="https://github.com/eslint/eslint/issues/18996">#18996</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/f879be240ca7ddf485b700df0eb93985ccb1db45"><code>f879be2</code></a> feat: export <code>ESLint.defaultConfig</code> (<a href="https://github.com/eslint/eslint/issues/18983">#18983</a>) (Nitin Kumar)</li> </ul> <h2 id="bug-fixes" tabindex="-1">Bug Fixes</h2> <ul> <li><a href="https://github.com/eslint/eslint/commit/78836d40ebd3881e527075a991da4cbb0ff9adfc"><code>78836d4</code></a> fix: update the <a href="/docs/rules/complexity"><code>complexity</code></a> rule type (<a href="https://github.com/eslint/eslint/issues/19027">#19027</a>) (Nitin Kumar)</li> <li><a href="https://github.com/eslint/eslint/commit/064c8b612e2e4b773d6b25867f2045e3ceaa9d66"><code>064c8b6</code></a> fix: update rule types (<a href="https://github.com/eslint/eslint/issues/18925">#18925</a>) (Nitin Kumar)</li> </ul> <h2 id="documentation" tabindex="-1">Documentation</h2> <ul> <li><a href="https://github.com/eslint/eslint/commit/abdbfa83907712d0d44a35aeed4e0ea7bf106740"><code>abdbfa8</code></a> docs: mark <code>LintMessage#nodeType</code> as deprecated (<a href="https://github.com/eslint/eslint/issues/19019">#19019</a>) (Nitin Kumar)</li> <li><a href="https://github.com/eslint/eslint/commit/19e68d3f3a86cf23e5c98eaf8736eeaa33f194f4"><code>19e68d3</code></a> docs: update deprecated rules type definitions (<a href="https://github.com/eslint/eslint/issues/19018">#19018</a>) (Nitin Kumar)</li> <li><a href="https://github.com/eslint/eslint/commit/7dd402d33226d821a17b22c4753ce9c40fc909bd"><code>7dd402d</code></a> docs: Update examples of passing multiple values to a CLI option (<a href="https://github.com/eslint/eslint/issues/19006">#19006</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/5dcbc519b729698be651bdbddb39da774cb70bf1"><code>5dcbc51</code></a> docs: Add example with side-effect imports to <a href="/docs/rules/no-restricted-imports">no-restricted-imports</a> (<a href="https://github.com/eslint/eslint/issues/18997">#18997</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/1ee87ca1c50018947e76c29e78da9aaf711f53a2"><code>1ee87ca</code></a> docs: Update README (GitHub Actions Bot)</li> <li><a href="https://github.com/eslint/eslint/commit/2c3dbdc2319fcf2f65c2de13f9064c5a315be890"><code>2c3dbdc</code></a> docs: Use prerendered sponsors for README (<a href="https://github.com/eslint/eslint/issues/18988">#18988</a>) (Milos Djermanovic)</li> </ul> <h2 id="chores" tabindex="-1">Chores</h2> <ul> <li><a href="https://github.com/eslint/eslint/commit/68d2d9dfd63401b6a9b413f11ac2c4b583e4897a"><code>68d2d9d</code></a> chore: upgrade to <code>@eslint/js@9.13.0</code> and <code>@eslint/core@^0.7.0</code> (<a href="https://github.com/eslint/eslint/issues/19034">#19034</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/2211f0aeb350f55e1fa71d4df93d46bc1795789d"><code>2211f0a</code></a> chore: package.json update for @eslint/js release (Jenkins)</li> <li><a href="https://github.com/eslint/eslint/commit/c7abaef5332caf4b6251c9550a81a9c29bf324fd"><code>c7abaef</code></a> perf: using Node.js compile cache (<a href="https://github.com/eslint/eslint/issues/19012">#19012</a>) (唯然)</li> <li><a href="https://github.com/eslint/eslint/commit/1d7c077145d070aa7754018b29b038ce2e0c8b0e"><code>1d7c077</code></a> chore: add pkg.type “commonjs” (<a href="https://github.com/eslint/eslint/issues/19011">#19011</a>) (唯然)</li> <li><a href="https://github.com/eslint/eslint/commit/468e3bdadfdf5f197a44efd6c8dc5cf2b241f964"><code>468e3bd</code></a> test: fix <code>ESLint</code> tests (<a href="https://github.com/eslint/eslint/issues/19021">#19021</a>) (Francesco Trotta)</li> <li><a href="https://github.com/eslint/eslint/commit/ed4635fa0e4fb91705223a7d9c230b6e9a87cd4c"><code>ed4635f</code></a> ci: upgrade knip@5.32.0 (<a href="https://github.com/eslint/eslint/issues/18992">#18992</a>) (Milos Djermanovic)</li> <li><a href="https://github.com/eslint/eslint/commit/efad76732170a9a7db2e056a8d9a0cf503448c48"><code>efad767</code></a> chore: remove unused ignore dependency (<a href="https://github.com/eslint/eslint/issues/18993">#18993</a>) (Amaresh S M)</li> </ul> </div> <div class="post__author-bios span-5-12"> <div class="profile profile--author"> <div class="profile--author__details"> <img class="profile__photo profile__photo--small" src="https://avatars.githubusercontent.com/u/6367844?v=4 " alt="Francesco Trotta" width="48" height="48" loading="lazy"> <div class="profile__details"> <div class="profile__name"> Francesco Trotta </div><span class="profile__title"> ESLint Technical Steering Committee </span><div class="profile__social-links"> <ul> <li> <a href="https://github.com/fasttime"> <svg width="20" height="20" viewBox="0 0 25 24" 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="#98A2B3" /> </svg> </a> </li> </ul> </div> </div> </div> <div class="profile__bio"> </div> </div> </div> <aside class="span-1-3 post__sidebar"> <div class="post__sidebar-module post-contributors"> <h2 class="post__sidebar-module__title">Contributors</h2> <div class="profile profile--contributor"> <img class="profile__photo profile__photo--medium" src="https://avatars.githubusercontent.com/u/6367844?v=4 " width="56" height="56" alt="Francesco Trotta" loading="lazy"> <div class="profile__details"> <div class="profile__name">Francesco Trotta</div> <a href="https://github.com/fasttime" class="profile__handle">@fasttime</a> </div> </div> </div> <div class="post__sidebar-module"> <h2 class="post__sidebar-module__title">Tags</h2> <ul role="list" class="tag-list"> <li class="tag-list__item">Release</li> </ul> </div> <div class="post__sidebar-module"> <h2 class="post__sidebar-module__title">Share</h2> <div class="c-share"> <button onclick="copyPageURLToClipboard();" class="c-share__btn" id="post-url-share-btn" hidden> <span class="visually-hidden">Share on: </span> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" role="img" aria-label="Link"> <path d="M8.3335 10.8333C8.69138 11.3118 9.14796 11.7077 9.67229 11.9941C10.1966 12.2806 10.7764 12.4509 11.3724 12.4936C11.9683 12.5363 12.5665 12.4503 13.1263 12.2415C13.6861 12.0327 14.1944 11.7059 14.6168 11.2833L17.1168 8.78335C17.8758 7.9975 18.2958 6.94499 18.2863 5.85251C18.2768 4.76002 17.8386 3.71497 17.0661 2.94243C16.2935 2.1699 15.2485 1.7317 14.156 1.7222C13.0635 1.71271 12.011 2.13269 11.2252 2.89168L9.79183 4.31668M11.6668 9.16668C11.309 8.68824 10.8524 8.29236 10.328 8.0059C9.80371 7.71943 9.22391 7.54908 8.62796 7.5064C8.032 7.46372 7.43384 7.54971 6.87405 7.75853C6.31425 7.96735 5.8059 8.29412 5.3835 8.71668L2.8835 11.2167C2.12451 12.0025 1.70453 13.055 1.71402 14.1475C1.72352 15.24 2.16172 16.2851 2.93426 17.0576C3.70679 17.8301 4.75184 18.2683 5.84433 18.2778C6.93681 18.2873 7.98932 17.8673 8.77517 17.1083L10.2002 15.6833" stroke="currentColor" stroke-width="1.67" stroke-linecap="round" stroke-linejoin="round" /> </svg> </button> <a class="c-share__btn" target="_blank" rel="noopener" href="https://twitter.com/intent/tweet?text=ESLint%20v9.13.0%20released&url=https://eslint.org/blog/2024/10/eslint-v9.13.0-released/"> <span class="visually-hidden">Share on: </span> <svg width="20" height="20" viewBox="0 0 512 512" fill="currentColor" role="img" aria-label="Twitter"> <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> <a class="c-share__btn" target="_blank" rel="noopener" href="http://www.facebook.com/sharer/sharer.php?u=https://eslint.org/blog/2024/10/eslint-v9.13.0-released/"> <span class="visually-hidden">Share on: </span> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" role="img" aria-label="Facebook"> <path d="M20 10C20 4.47715 15.5229 0 10 0C4.47715 0 0 4.47715 0 10C0 14.9912 3.65684 19.1283 8.4375 19.8785V12.8906H5.89844V10H8.4375V7.79688C8.4375 5.29063 9.93047 3.90625 12.2146 3.90625C13.3084 3.90625 14.4531 4.10156 14.4531 4.10156V6.5625H13.1922C11.95 6.5625 11.5625 7.3334 11.5625 8.125V10H14.3359L13.8926 12.8906H11.5625V19.8785C16.3432 19.1283 20 14.9912 20 10Z" fill="currentColor" /> </svg> </a> <a class="c-share__btn" target="_blank" rel="noopener" href="http://www.linkedin.com/shareArticle?mini=true&url=https://eslint.org/blog/2024/10/eslint-v9.13.0-released/&title=ESLint%20v9.13.0%20released"> <span class="visually-hidden">Share on: </span> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" role="img" aria-label="LinkedIn"> <path d="M18.5195 0H1.47656C0.660156 0 0 0.644531 0 1.44141V18.5547C0 19.3516 0.660156 20 1.47656 20H18.5195C19.3359 20 20 19.3516 20 18.5586V1.44141C20 0.644531 19.3359 0 18.5195 0ZM5.93359 17.043H2.96484V7.49609H5.93359V17.043ZM4.44922 6.19531C3.49609 6.19531 2.72656 5.42578 2.72656 4.47656C2.72656 3.52734 3.49609 2.75781 4.44922 2.75781C5.39844 2.75781 6.16797 3.52734 6.16797 4.47656C6.16797 5.42187 5.39844 6.19531 4.44922 6.19531ZM17.043 17.043H14.0781V12.4023C14.0781 11.2969 14.0586 9.87109 12.5352 9.87109C10.9922 9.87109 10.7578 11.0781 10.7578 12.3242V17.043H7.79688V7.49609H10.6406V8.80078H10.6797C11.0742 8.05078 12.043 7.25781 13.4844 7.25781C16.4883 7.25781 17.043 9.23438 17.043 11.8047V17.043V17.043Z" fill="currentColor" /> </svg> </a> <span aria-live="polite" aria-atomic="true" id="ctc-announcement" class="ctc-announcement"></span> </div> <script> var shareBtn = document.getElementById('post-url-share-btn'); shareBtn.removeAttribute('hidden'); function copyPageURLToClipboard() { const url = window.location.href; navigator.clipboard.writeText(url); announceCopyToSRs(); shareBtn.setAttribute('data-copied', 'true'); setTimeout(() => { shareBtn.removeAttribute('data-copied'); }, 5000); } function announceCopyToSRs() { var announcement_region = document.getElementById('ctc-announcement'); announcement_region.innerHTML = 'Copied to clipboard.' announcement_region.setAttribute('data-fades-out', 'true'); setTimeout(() => { announcement_region.innerHTML = ""; announcement_region.removeAttribute('data-fades-out'); }, 4000); } </script> </div> </aside> </div> </main> <section aria-labelledby="more-posts-label" class="from-the-blog"> <div class="content-container"> <div class="from-the-blog__top grid grid--center-items"> <header class="section-head span-1-7 "> <h2 class="from-the-blog__title" id="more-posts-label">From the blog</h2> <p class=""> The latest ESLint news, case studies, tutorials, and resources. </p> </header> <div class="span-11-12"><a href="/blog" class="c-btn c-btn--primary c-btn--block from-the-blog__more">View all posts</a></div> </div> <div class="blog-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> <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> <article class='card '><a href="/blog/2024/10/code-review-nit-to-ecosystem-improvements/" class="card__cover" tabindex="-1"><picture><source type="image/webp" srcset="/assets/images/storytime-560w.webp 560w" sizes="(max-width: 768px) 100vw, 50vw"><img alt="no-unused-binary-expressions: From code review nit to ecosystem improvements" class="undefined" loading="lazy" decoding="async" src="/assets/images/storytime-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> Storytime </span> <span class="blog-post__reading-time"> 5 min read </span> </div> <h3 class="card__title"> <a href="/blog/2024/10/code-review-nit-to-ecosystem-improvements/"> no-unused-binary-expressions: From code review nit to ecosystem improvements</a> </h3> <p class="card__teaser"> How implementing an ESLint rule led to changes in how people write JavaScript </p> <div class="card__footer"> <img class="blog-post__author-photo" src="https://avatars.githubusercontent.com/u/162735?v=4 " alt="Jordan Eldredge" width="40" height="40" loading="lazy"> <div class="blog-post__author__details"> <div class="blog-post__author-name">Jordan Eldredge</div> <time class="blog-post__publish-date" datetime="Tue Oct 08 2024 00:00:00 GMT+0000 (Coordinated Universal Time)">08 Oct, 2024</time> </div> </div> </div> </article> </div> </div> </section> <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> </body> </html>