Content-Length: 553842 | pFad | https://redirect.github.com/eslint/eslint/issues/19012

55 perf: using Node.js compile cache by aladdin-add · Pull Request #19012 · eslint/eslint · GitHub
Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

perf: using Node.js compile cache #19012

Merged
merged 3 commits into from
Oct 18, 2024
Merged

Conversation

aladdin-add
Copy link
Member

@aladdin-add aladdin-add commented Oct 11, 2024

it was introduced in node.js v22.8.0
https://nodejs.org/en/blog/release/v22.8.0#new-js-api-for-compile-cache

fixes #18968

Prerequisites checklist

What is the purpose of this pull request? (put an "X" next to an item)

[ ] Documentation update
[ ] Bug fix (template)
[ ] New rule (template)
[ ] Changes an existing rule (template)
[ ] Add autofix to a rule
[ ] Add a CLI option
[ ] Add something to the core
[ x] Other, please explain:

What changes did you make? (Give an overview)

tested on

  • ESLint: v9.12.0
  • Node version: v22.9.0
  • Operating System: darwin 24.1.0

before the change:

Loading:
  Load performance Run #1:  181.045881ms
  Load performance Run #2:  188.315573ms
  Load performance Run #3:  411.307467ms
  Load performance Run #4:  208.031565ms
  Load performance Run #5:  240.104659ms

  Load Performance median:  208.031565ms

after the change(2rd time):

Loading:
  Load performance Run #1:  123.129709ms
  Load performance Run #2:  136.558748ms
  Load performance Run #3:  134.139566ms
  Load performance Run #4:  136.995985ms
  Load performance Run #5:  206.45432ms

  Load Performance median:  136.558748ms

Is there anything you'd like reviewers to focus on?

module.enableCompileCache() is still experimental Stability: 1.1 - Active Development

https://nodejs.org/docs/latest/api/module.html#moduleenablecompilecachecachedir

@eslint-github-bot eslint-github-bot bot added the chore This change is not user-facing label Oct 11, 2024
Copy link

netlify bot commented Oct 11, 2024

Deploy Preview for docs-eslint canceled.

Name Link
🔨 Latest commit 4a81947
🔍 Latest deploy log https://app.netlify.com/sites/docs-eslint/deploys/670f207745c6dd00081280bc

@aladdin-add aladdin-add marked this pull request as ready for review October 14, 2024 02:19
@aladdin-add aladdin-add requested a review from a team as a code owner October 14, 2024 02:19
Comment on lines +12 to +16
const mod = require("node:module");

// to use V8's code cache to speed up instantiation time
mod.enableCompileCache?.();

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it work for developers using the Node.js API and not CLI?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's intentional - see #11921 (review)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense 👍🏻 .

snitin315
snitin315 previously approved these changes Oct 15, 2024
@snitin315 snitin315 added the accepted There is consensus among the team that this change meets the criteria for inclusion label Oct 15, 2024
@snitin315
Copy link
Contributor

LGTM. Awaiting 2nd review

@mdjermanovic
Copy link
Member

module.enableCompileCache() is still experimental Stability: 1.1 - Active Development

Then maybe we shouldn't use it yet? Description for Stability: 1 says "Use of the feature is not recommended in production environments".

@snitin315
Copy link
Contributor

module.enableCompileCache() is still experimental Stability: 1.1 - Active Development

Then maybe we shouldn't use it yet? Description for Stability: 1 says "Use of the feature is not recommended in production environments".

I think it should be fine to use, especially since TypeScript recently implemented this too. We can always keep an eye out for any potential changes or improvements.

@mdjermanovic
Copy link
Member

I think it should be fine to use, especially since TypeScript recently implemented this too. We can always keep an eye out for any potential changes or improvements.

Looks like they wrapped the enableCompileCache() call in a try-catch?

https://github.com/microsoft/TypeScript/blob/40caf3431986884b3da7a607de22ced5d364d9fc/Herebyfile.mjs#L332-L337

And there's also a config option to disable it:

https://github.com/microsoft/TypeScript/blob/40caf3431986884b3da7a607de22ced5d364d9fc/Herebyfile.mjs#L320

@snitin315
Copy link
Contributor

I think it should be fine to use, especially since TypeScript recently implemented this too. We can always keep an eye out for any potential changes or improvements.

Looks like they wrapped the enableCompileCache() call in a try-catch?

https://github.com/microsoft/TypeScript/blob/40caf3431986884b3da7a607de22ced5d364d9fc/Herebyfile.mjs#L332-L337

And there's also a config option to disable it:

https://github.com/microsoft/TypeScript/blob/40caf3431986884b3da7a607de22ced5d364d9fc/Herebyfile.mjs#L320

Hmm, can we also implement this with a flag, something like eslint --flag enable-compile-cache?

Signed-off-by: 唯然 <weiran.zsd@outlook.com>
@aladdin-add
Copy link
Member Author

aladdin-add commented Oct 16, 2024

It depends on what the result of a failed call is - if it's that in some cases the cache won't take effect, and Not throwing an error - I think that's perfectly acceptable!

@mdjermanovic
Copy link
Member

It depends on what the result of a failed call is - if it's that in some cases the cache won't take effect, and Not throwing an error - I think that's perfectly acceptable!

If the call ends up having no effect, I also think that's perfectly acceptable. I'm only concerned if module loading will start throwing errors or malfunctioning in any other way at some later point, as this is an experimental feature.

@mdjermanovic
Copy link
Member

its docs said:

Since compile cache is supposed to be a quiet optimization that is not required for the application to be functional, this method is designed to not throw any exception when the compile cache cannot be enabled.

https://nodejs.org/docs/latest/api/module.html#moduleenablecompilecachecachedir

I think the statement refers to the API: enableCompileCache() call will not throw an error when the compile cache cannot be enabled. But since it's still marked as an experimental feature, I'm not sure if it's guaranteed that everything will work properly when the compile cache is enabled.

@mdjermanovic
Copy link
Member

Hmm, can we also implement this with a flag, something like eslint --flag enable-compile-cache?

That might be a good option, though I think users can already manually enable this by setting the NODE_COMPILE_CACHE environment variable.

@aladdin-add
Copy link
Member Author

aladdin-add commented Oct 17, 2024

well, now we have 3 choices:

  1. enable it by default, and keep an eye out for any potential changes or improvements..
  2. wait a while for it to stabilize before enabling it.
  3. enable it when specifying --flag enable-compile-cache (not enabled by default)

my preference is 2 >= 1 > 3.

@nzakas
Copy link
Member

nzakas commented Oct 17, 2024

The API is the part that's experimental, the feature has been around for a while but only enabled via environment variable. So the compile cache itself isn't experimental.

@mdjermanovic
Copy link
Member

The API is the part that's experimental, the feature has been around for a while but only enabled via environment variable. So the compile cache itself isn't experimental.

In that case, it seems safe to merge.

Copy link
Member

@mdjermanovic mdjermanovic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

@mdjermanovic mdjermanovic merged commit c7abaef into eslint:main Oct 18, 2024
25 checks passed
@aladdin-add aladdin-add deleted the issue18968 branch October 18, 2024 05:48
Vylpes pushed a commit to Vylpes/random-bunny that referenced this pull request Oct 21, 2024
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [@eslint/js](https://eslint.org) ([source](https://github.com/eslint/eslint/tree/HEAD/packages/js)) | devDependencies | minor | [`9.10.0` -> `9.13.0`](https://renovatebot.com/diffs/npm/@eslint%2fjs/9.10.0/9.13.0) |

---

### Release Notes

<details>
<summary>eslint/eslint (@&#8203;eslint/js)</summary>

### [`v9.13.0`](https://github.com/eslint/eslint/releases/tag/v9.13.0)

[Compare Source](eslint/eslint@v9.12.0...v9.13.0)

#### Features

-   [`381c32b`](eslint/eslint@381c32b) feat: Allow languages to provide `defaultLanguageOptions` ([#&#8203;19003](eslint/eslint#19003)) (Milos Djermanovic)
-   [`bf723bd`](eslint/eslint@bf723bd) feat: Improve eslintrc warning message ([#&#8203;19023](eslint/eslint#19023)) (Milos Djermanovic)
-   [`1def4cd`](eslint/eslint@1def4cd) feat: drop support for jiti v1.21 ([#&#8203;18996](eslint/eslint#18996)) (Francesco Trotta)
-   [`f879be2`](eslint/eslint@f879be2) feat: export `ESLint.defaultConfig` ([#&#8203;18983](eslint/eslint#18983)) (Nitin Kumar)

#### Bug Fixes

-   [`78836d4`](eslint/eslint@78836d4) fix: update the `complexity` rule type ([#&#8203;19027](eslint/eslint#19027)) (Nitin Kumar)
-   [`064c8b6`](eslint/eslint@064c8b6) fix: update rule types ([#&#8203;18925](eslint/eslint#18925)) (Nitin Kumar)

#### Documentation

-   [`abdbfa8`](eslint/eslint@abdbfa8) docs: mark `LintMessage#nodeType` as deprecated ([#&#8203;19019](eslint/eslint#19019)) (Nitin Kumar)
-   [`19e68d3`](eslint/eslint@19e68d3) docs: update deprecated rules type definitions ([#&#8203;19018](eslint/eslint#19018)) (Nitin Kumar)
-   [`7dd402d`](eslint/eslint@7dd402d) docs: Update examples of passing multiple values to a CLI option ([#&#8203;19006](eslint/eslint#19006)) (Milos Djermanovic)
-   [`5dcbc51`](eslint/eslint@5dcbc51) docs: Add example with side-effect imports to no-restricted-imports ([#&#8203;18997](eslint/eslint#18997)) (Milos Djermanovic)
-   [`1ee87ca`](eslint/eslint@1ee87ca) docs: Update README (GitHub Actions Bot)
-   [`2c3dbdc`](eslint/eslint@2c3dbdc) docs: Use prerendered sponsors for README ([#&#8203;18988](eslint/eslint#18988)) (Milos Djermanovic)

#### Chores

-   [`68d2d9d`](eslint/eslint@68d2d9d) chore: upgrade to `@eslint/js@9.13.0` and `@eslint/core@^0.7.0` ([#&#8203;19034](eslint/eslint#19034)) (Francesco Trotta)
-   [`2211f0a`](eslint/eslint@2211f0a) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`c7abaef`](eslint/eslint@c7abaef) perf: using Node.js compile cache ([#&#8203;19012](eslint/eslint#19012)) (唯然)
-   [`1d7c077`](eslint/eslint@1d7c077) chore: add pkg.type "commonjs" ([#&#8203;19011](eslint/eslint#19011)) (唯然)
-   [`468e3bd`](eslint/eslint@468e3bd) test: fix `ESLint` tests ([#&#8203;19021](eslint/eslint#19021)) (Francesco Trotta)
-   [`ed4635f`](eslint/eslint@ed4635f) ci: upgrade knip@5.32.0 ([#&#8203;18992](eslint/eslint#18992)) (Milos Djermanovic)
-   [`efad767`](eslint/eslint@efad767) chore: remove unused ignore dependency ([#&#8203;18993](eslint/eslint#18993)) (Amaresh  S M)

### [`v9.12.0`](https://github.com/eslint/eslint/releases/tag/v9.12.0)

[Compare Source](eslint/eslint@v9.11.1...v9.12.0)

#### Features

-   [`5a6a053`](eslint/eslint@5a6a053) feat: update to `jiti` v2 ([#&#8203;18954](eslint/eslint#18954)) (Arya Emami)
-   [`17a07fb`](eslint/eslint@17a07fb) feat: Hooks for test cases (RuleTester) ([#&#8203;18771](eslint/eslint#18771)) (Anna Bocharova)
-   [`2ff0e51`](eslint/eslint@2ff0e51) feat: Implement alternate config lookup ([#&#8203;18742](eslint/eslint#18742)) (Nicholas C. Zakas)
-   [`2d17453`](eslint/eslint@2d17453) feat: Implement modified cyclomatic complexity ([#&#8203;18896](eslint/eslint#18896)) (Dmitry Pashkevich)

#### Bug Fixes

-   [`ea380ca`](eslint/eslint@ea380ca) fix: Upgrade retry to avoid EMFILE errors ([#&#8203;18986](eslint/eslint#18986)) (Nicholas C. Zakas)
-   [`fdd6319`](eslint/eslint@fdd6319) fix: Issues with type definitions ([#&#8203;18940](eslint/eslint#18940)) (Arya Emami)

#### Documentation

-   [`ecbd522`](eslint/eslint@ecbd522) docs: Mention code explorer ([#&#8203;18978](eslint/eslint#18978)) (Nicholas C. Zakas)
-   [`7ea4ecc`](eslint/eslint@7ea4ecc) docs: Clarifying the Use of Meta Objects ([#&#8203;18697](eslint/eslint#18697)) (Amaresh  S M)
-   [`d3e4b2e`](eslint/eslint@d3e4b2e) docs: Clarify how to exclude `.js` files ([#&#8203;18976](eslint/eslint#18976)) (Milos Djermanovic)
-   [`57232ff`](eslint/eslint@57232ff) docs: Mention plugin-kit in language docs ([#&#8203;18973](eslint/eslint#18973)) (Nicholas C. Zakas)
-   [`b80ed00`](eslint/eslint@b80ed00) docs: Update README (GitHub Actions Bot)
-   [`cb69ab3`](eslint/eslint@cb69ab3) docs: Update README (GitHub Actions Bot)
-   [`7fb0d95`](eslint/eslint@7fb0d95) docs: Update README (GitHub Actions Bot)
-   [`493348a`](eslint/eslint@493348a) docs: Update README (GitHub Actions Bot)
-   [`87a582c`](eslint/eslint@87a582c) docs: fix typo in `id-match` rule ([#&#8203;18944](eslint/eslint#18944)) (Jay)

#### Chores

-   [`555aafd`](eslint/eslint@555aafd) chore: upgrade to `@eslint/js@9.12.0` ([#&#8203;18987](eslint/eslint#18987)) (Francesco Trotta)
-   [`873ae60`](eslint/eslint@873ae60) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`d0a5414`](eslint/eslint@d0a5414) refactor: replace strip-ansi with native module ([#&#8203;18982](eslint/eslint#18982)) (Cristopher)
-   [`b827029`](eslint/eslint@b827029) chore: Enable JSON5 linting ([#&#8203;18979](eslint/eslint#18979)) (Milos Djermanovic)
-   [`8f55ca2`](eslint/eslint@8f55ca2) chore: Upgrade espree, eslint-visitor-keys, eslint-scope ([#&#8203;18962](eslint/eslint#18962)) (Nicholas C. Zakas)
-   [`c1a2725`](eslint/eslint@c1a2725) chore: update dependency mocha to ^10.7.3 ([#&#8203;18945](eslint/eslint#18945)) (Milos Djermanovic)

### [`v9.11.1`](https://github.com/eslint/eslint/releases/tag/v9.11.1)

[Compare Source](eslint/eslint@v9.11.0...v9.11.1)

#### Bug Fixes

-   [`20fd916`](eslint/eslint@20fd916) fix: add `@eslint/core`, `@types/estree`, & `@types/json-schema` deps ([#&#8203;18938](eslint/eslint#18938)) (Nitin Kumar)
-   [`2738322`](eslint/eslint@2738322) fix: add missing types for `require-atomic-updates` rule ([#&#8203;18937](eslint/eslint#18937)) (Kristóf Poduszló)
-   [`d71ff30`](eslint/eslint@d71ff30) fix: add missing types for `object-shorthand` rule ([#&#8203;18935](eslint/eslint#18935)) (Kristóf Poduszló)
-   [`561cadc`](eslint/eslint@561cadc) fix: add missing types for `no-unsafe-negation` rule ([#&#8203;18932](eslint/eslint#18932)) (Kristóf Poduszló)
-   [`8843656`](eslint/eslint@8843656) fix: add missing types for `no-underscore-dangle` rule ([#&#8203;18931](eslint/eslint#18931)) (Kristóf Poduszló)
-   [`92cde5c`](eslint/eslint@92cde5c) fix: add missing types for `no-shadow` rule ([#&#8203;18930](eslint/eslint#18930)) (Kristóf Poduszló)
-   [`b3cbe11`](eslint/eslint@b3cbe11) fix: add missing types for `no-sequences` rule ([#&#8203;18929](eslint/eslint#18929)) (Kristóf Poduszló)
-   [`976f77f`](eslint/eslint@976f77f) fix: add missing types for `no-unused-expressions` rule ([#&#8203;18933](eslint/eslint#18933)) (Kristóf Poduszló)

#### Documentation

-   [`3eff709`](eslint/eslint@3eff709) docs: replace deprecated `Linter.FlatConfig` type with `Linter.Config` ([#&#8203;18941](eslint/eslint#18941)) (Carlos Meira)

#### Chores

-   [`df4a859`](eslint/eslint@df4a859) chore: upgrade [@&#8203;eslint/js](https://github.com/eslint/js)[@&#8203;9](https://github.com/9).11.1 ([#&#8203;18943](eslint/eslint#18943)) (Milos Djermanovic)
-   [`36d8095`](eslint/eslint@36d8095) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins)

### [`v9.11.0`](https://github.com/eslint/eslint/releases/tag/v9.11.0)

[Compare Source](eslint/eslint@v9.10.0...v9.11.0)

#### Features

-   [`ec30c73`](eslint/eslint@ec30c73) feat: add "eslint/universal" to export `Linter` ([#&#8203;18883](eslint/eslint#18883)) (唯然)
-   [`c591da6`](eslint/eslint@c591da6) feat: Add language to types ([#&#8203;18917](eslint/eslint#18917)) (Nicholas C. Zakas)
-   [`492eb8f`](eslint/eslint@492eb8f) feat: limit the name given to `ImportSpecifier` in `id-length` ([#&#8203;18861](eslint/eslint#18861)) (Tanuj Kanti)
-   [`19c6856`](eslint/eslint@19c6856) feat: Add `no-useless-constructor` suggestion ([#&#8203;18799](eslint/eslint#18799)) (Jordan Thomson)
-   [`a48f8c2`](eslint/eslint@a48f8c2) feat: add type `FormatterFunction`, update `LoadedFormatter` ([#&#8203;18872](eslint/eslint#18872)) (Francesco Trotta)

#### Bug Fixes

-   [`5e5f39b`](eslint/eslint@5e5f39b) fix: add missing types for `no-restricted-exports` rule ([#&#8203;18914](eslint/eslint#18914)) (Kristóf Poduszló)
-   [`8f630eb`](eslint/eslint@8f630eb) fix: add missing types for `no-param-reassign` options ([#&#8203;18906](eslint/eslint#18906)) (Kristóf Poduszló)
-   [`d715781`](eslint/eslint@d715781) fix: add missing types for `no-extra-boolean-cast` options ([#&#8203;18902](eslint/eslint#18902)) (Kristóf Poduszló)
-   [`2de5742`](eslint/eslint@2de5742) fix: add missing types for `no-misleading-character-class` options ([#&#8203;18905](eslint/eslint#18905)) (Kristóf Poduszló)
-   [`c153084`](eslint/eslint@c153084) fix: add missing types for `no-implicit-coercion` options ([#&#8203;18903](eslint/eslint#18903)) (Kristóf Poduszló)
-   [`fa11b2e`](eslint/eslint@fa11b2e) fix: add missing types for `no-empty-function` options ([#&#8203;18901](eslint/eslint#18901)) (Kristóf Poduszló)
-   [`a0deed1`](eslint/eslint@a0deed1) fix: add missing types for `camelcase` options ([#&#8203;18897](eslint/eslint#18897)) (Kristóf Poduszló)

#### Documentation

-   [`e4e5709`](eslint/eslint@e4e5709) docs: correct `prefer-object-has-own` type definition comment ([#&#8203;18924](eslint/eslint#18924)) (Nitin Kumar)
-   [`91cbd18`](eslint/eslint@91cbd18) docs: add unicode abbreviations in no-irregular-whitespace rule ([#&#8203;18894](eslint/eslint#18894)) (Alix Royere)
-   [`59cfc0f`](eslint/eslint@59cfc0f) docs: clarify `resultsMeta` in `LoadedFormatter` type ([#&#8203;18881](eslint/eslint#18881)) (Milos Djermanovic)
-   [`adcc50d`](eslint/eslint@adcc50d) docs: Update README (GitHub Actions Bot)
-   [`4edac1a`](eslint/eslint@4edac1a) docs: Update README (GitHub Actions Bot)

#### Build Related

-   [`959d360`](eslint/eslint@959d360) build: Support updates to previous major versions ([#&#8203;18871](eslint/eslint#18871)) (Milos Djermanovic)

#### Chores

-   [`ca21a64`](eslint/eslint@ca21a64) chore: upgrade [@&#8203;eslint/js](https://github.com/eslint/js)[@&#8203;9](https://github.com/9).11.0 ([#&#8203;18927](eslint/eslint#18927)) (Milos Djermanovic)
-   [`a10f90a`](eslint/eslint@a10f90a) chore: package.json update for [@&#8203;eslint/js](https://github.com/eslint/js) release (Jenkins)
-   [`e4e02cc`](eslint/eslint@e4e02cc) refactor: Extract processor logic into ProcessorService ([#&#8203;18818](eslint/eslint#18818)) (Nicholas C. Zakas)
-   [`6d4484d`](eslint/eslint@6d4484d) chore: updates for v8.57.1 release (Jenkins)
-   [`71f37c5`](eslint/eslint@71f37c5) refactor: use optional chaining when validating config rules ([#&#8203;18893](eslint/eslint#18893)) (lucasrmendonca)
-   [`2c2805f`](eslint/eslint@2c2805f) chore: Add PR note to all templates ([#&#8203;18892](eslint/eslint#18892)) (Nicholas C. Zakas)
-   [`7b852ce`](eslint/eslint@7b852ce) refactor: use `Directive` class from `@eslint/plugin-kit` ([#&#8203;18884](eslint/eslint#18884)) (Milos Djermanovic)
-   [`d594ddd`](eslint/eslint@d594ddd) chore: update dependency [@&#8203;eslint/core](https://github.com/eslint/core) to ^0.6.0 ([#&#8203;18863](eslint/eslint#18863)) (renovate\[bot])
-   [`78b2421`](eslint/eslint@78b2421) chore: Update change.yml ([#&#8203;18882](eslint/eslint#18882)) (Nicholas C. Zakas)
-   [`a416f0a`](eslint/eslint@a416f0a) chore: enable `$ExpectType` comments in .ts files ([#&#8203;18869](eslint/eslint#18869)) (Francesco Trotta)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC44MC4wIiwidXBkYXRlZEluVmVyIjoiMzguODAuMCIsInRhcmdldEJyYW5jaCI6ImRldmVsb3AiLCJsYWJlbHMiOlsidHlwZS9kZXBlbmRlbmNpZXMiXX0=-->

Reviewed-on: https://git.vylpes.xyz/RabbitLabs/random-bunny/pulls/231
Reviewed-by: Vylpes <ethan@vylpes.com>
Co-authored-by: Renovate Bot <renovate@vylpes.com>
Co-committed-by: Renovate Bot <renovate@vylpes.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
accepted There is consensus among the team that this change meets the criteria for inclusion chore This change is not user-facing
Projects
Status: Complete
Development

Successfully merging this pull request may close these issues.

Change Request: Investigate using Node.js compile cache
4 participants








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: https://redirect.github.com/eslint/eslint/issues/19012

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy