fs: add ignore option to fs.watch#61433
Conversation
Add an `ignore` option to `fs.watch()` to filter filesystem events. Supports string globs, RegExp, functions, or arrays of these.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #61433 +/- ##
==========================================
+ Coverage 88.51% 89.86% +1.34%
==========================================
Files 704 671 -33
Lines 208883 203297 -5586
Branches 40334 39098 -1236
==========================================
- Hits 184890 182684 -2206
+ Misses 15977 12966 -3011
+ Partials 8016 7647 -369
🚀 New features to boost your workflow:
|
Use setInterval instead of setTimeout to handle potential event delays on macOS FSEvents. This ensures that if a write event is missed due to event coalescing or latency, subsequent writes will eventually trigger the expected event.
|
The
notable-change
Please suggest a text for the release notes if you'd like to include a more detailed summary, then proceed to update the PR description with the text or a link to the notable change suggested text comment. Otherwise, the commit will be placed in the Other Notable Changes section. |
lib/internal/fs/watchers.js
Outdated
| let minimatch; | ||
| function lazyMinimatch() { | ||
| minimatch ??= require('internal/deps/minimatch/index'); | ||
| return minimatch; | ||
| } |
There was a problem hiding this comment.
We have a lazy utility in internal utils
|
It looks like there's a consistent failure on macOS |
|
Can't users already do this by ignoring the events they are not interested in? What are the advantages for having this option in core? |
Unfortunately that's not identical. Let's imagine there is a big folder full of files (e.g. It's not equivalent, and it's needded for any pratical application of watch. |
From a glance, it seems that this PR does not touch the native layer and all the changes are still returned by the OS for later filtering. Am I reading this wrong? |
On macOS, FSEvents reports events for both directories and files. The pattern '**/node_modules/**' only matches files inside node_modules, not the directory itself. Use an array pattern to match both.
@lpinca nope, fixed. |
|
Ok, it makes sense now. |
Instead of just filtering events, skip watching ignored paths entirely to avoid kernel resource pressure from unnecessary file watchers. This is especially important for large directories like node_modules.
f1fefcb to
c829ef2
Compare
Commit Queue failed- Loading data for nodejs/node/pull/61433 ✔ Done loading data for nodejs/node/pull/61433 ----------------------------------- PR info ------------------------------------ Title fs: add ignore option to fs.watch (#61433) Author Matteo Collina <matteo.collina@gmail.com> (@mcollina) Branch mcollina:fs-watch-ignore-option -> nodejs:main Labels fs, semver-minor, notable-change, author ready, needs-ci, lts-watch-v24.x Commits 8 - fs: add ignore option to fs.watch - doc: add ignore option to fs.watch documentation - test: fix flaky test-fs-watch-ignore-recursive - test: fix node_modules pattern to match directory events - fs: skip watching ignored paths in recursive watcher - fs: use getLazy utility for minimatch - test: fix flaky test-fs-watch-ignore - test: skip fs.watch ignore tests on SunOS Committers 1 - Matteo Collina <hello@matteocollina.com> PR-URL: https://github.com/nodejs/node/pull/61433 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Aviv Keller <me@aviv.sh> Reviewed-By: Chemi Atlow <chemi@atlow.co.il> Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> ------------------------------ Generated metadata ------------------------------ PR-URL: https://github.com/nodejs/node/pull/61433 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Aviv Keller <me@aviv.sh> Reviewed-By: Chemi Atlow <chemi@atlow.co.il> Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> -------------------------------------------------------------------------------- ℹ This PR was created on Sun, 18 Jan 2026 21:45:54 GMT ✔ Approvals: 6 ✔ - Yagiz Nizipli (@anonrig) (TSC): https://github.com/nodejs/node/pull/61433#pullrequestreview-3675952653 ✔ - Colin Ihrig (@cjihrig): https://github.com/nodejs/node/pull/61433#pullrequestreview-3678906686 ✔ - Aviv Keller (@avivkeller): https://github.com/nodejs/node/pull/61433#pullrequestreview-3679859511 ✔ - Chemi Atlow (@atlowChemi): https://github.com/nodejs/node/pull/61433#pullrequestreview-3691066585 ✔ - Moshe Atlow (@MoLow): https://github.com/nodejs/node/pull/61433#pullrequestreview-3685541790 ✔ - Trivikram Kamat (@trivikr): https://github.com/nodejs/node/pull/61433#pullrequestreview-3693330759 ✔ Last GitHub CI successful ℹ Last Full PR CI on 2026-01-22T21:03:29Z: https://ci.nodejs.org/job/node-test-pull-request/70975/ - Querying data for job/node-test-pull-request/70975/ ✔ Build data downloaded ✔ Last Jenkins CI successful -------------------------------------------------------------------------------- ✔ No git cherry-pick in progress ✔ No git am in progress ✔ No git rebase in progress -------------------------------------------------------------------------------- - Bringing origin/main up to date... From https://github.com/nodejs/node * branch main -> FETCH_HEAD ✔ origin/main is now up-to-date - Downloading patch for 61433 From https://github.com/nodejs/node * branch refs/pull/61433/merge -> FETCH_HEAD ✔ Fetched commits as 34abee5b3bd3..7571d97abe7e -------------------------------------------------------------------------------- Auto-merging lib/fs.js [main 3771e0615c] fs: add ignore option to fs.watch Author: Matteo Collina <hello@matteocollina.com> Date: Sun Jan 18 22:45:27 2026 +0100 7 files changed, 777 insertions(+), 10 deletions(-) create mode 100644 test/parallel/test-fs-watch-ignore-promise.js create mode 100644 test/parallel/test-fs-watch-ignore-recursive.js create mode 100644 test/parallel/test-fs-watch-ignore.js [main 7653a97c4d] doc: add ignore option to fs.watch documentation Author: Matteo Collina <hello@matteocollina.com> Date: Sun Jan 18 22:52:20 2026 +0100 1 file changed, 9 insertions(+) [main 29a2817e89] test: fix flaky test-fs-watch-ignore-recursive Author: Matteo Collina <hello@matteocollina.com> Date: Mon Jan 19 19:18:01 2026 +0100 1 file changed, 46 insertions(+), 30 deletions(-) [main b31caaeb6a] test: fix node_modules pattern to match directory events Author: Matteo Collina <hello@matteocollina.com> Date: Tue Jan 20 13:14:35 2026 +0100 1 file changed, 3 insertions(+), 1 deletion(-) [main 48b6a6406b] fs: skip watching ignored paths in recursive watcher Author: Matteo Collina <hello@matteocollina.com> Date: Tue Jan 20 20:48:46 2026 +0100 2 files changed, 13 insertions(+), 15 deletions(-) [main 9126270b52] fs: use getLazy utility for minimatch Author: Matteo Collina <hello@matteocollina.com> Date: Tue Jan 20 23:25:07 2026 +0100 1 file changed, 2 insertions(+), 5 deletions(-) [main 488c940653] test: fix flaky test-fs-watch-ignore Author: Matteo Collina <hello@matteocollina.com> Date: Wed Jan 21 14:01:51 2026 +0100 1 file changed, 46 insertions(+), 19 deletions(-) [main 1e6b3d9ab8] test: skip fs.watch ignore tests on SunOS Author: Matteo Collina <hello@matteocollina.com> Date: Thu Jan 22 13:10:27 2026 +0100 3 files changed, 9 insertions(+) ✔ Patches applied There are 8 commits in the PR. Attempting autorebase. (node:2341) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated. (Use `node --trace-deprecation ...` to show where the warning was created) Rebasing (2/16) Executing: git node land --amend --yes --------------------------------- New Message ---------------------------------- fs: add ignore option to fs.watchhttps://github.com/nodejs/node/actions/runs/21266914334 |
|
Landed in f700203 |
Split and simplify the tests into individual files. Refs: nodejs#61433
Add an `ignore` option to `fs.watch()` to filter filesystem events. Supports string globs, RegExp, functions, or arrays of these. PR-URL: #61433 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Aviv Keller <me@aviv.sh> Reviewed-By: Chemi Atlow <chemi@atlow.co.il> Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Add an `ignore` option to `fs.watch()` to filter filesystem events. Supports string globs, RegExp, functions, or arrays of these. PR-URL: nodejs#61433 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Aviv Keller <me@aviv.sh> Reviewed-By: Chemi Atlow <chemi@atlow.co.il> Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Notable changes: crypto: * update root certificates to NSS 3.119 (Node.js GitHub Bot) #61419 deps: * (SEMVER-MINOR) add LIEF as a dependency (Joyee Cheung) #61167 * (SEMVER-MINOR) add tools and scripts to pull LIEF as a dependency (Joyee Cheung) #61167 fs: * (SEMVER-MINOR) add ignore option to fs.watch (Matteo Collina) #61433 sea: * (SEMVER-MINOR) add --build-sea to generate SEA directly with Node.js binary (Joyee Cheung) #61167 * (SEMVER-MINOR) split sea binary manipulation code (Joyee Cheung) #61167 sqlite: * (SEMVER-MINOR) enable defensive mode by default (Bart Louwers) #61266 * (SEMVER-MINOR) add sqlite prepare options args (Guilherme Araújo) #61311 src: * use node- prefix on thread names (Stewart X Addison) #61307 test: * (SEMVER-MINOR) migrate to --build-sea in existing SEA tests (Joyee Cheung) #61167 * (SEMVER-MINOR) use fixture directories for sea tests (Joyee Cheung) #61167 test_runner: * (SEMVER-MINOR) support expecting a test-case to fail (Jacob Smith) #60669 PR-URL: #61519
Notable changes: crypto: * update root certificates to NSS 3.119 (Node.js GitHub Bot) #61419 deps: * (SEMVER-MINOR) add LIEF as a dependency (Joyee Cheung) #61167 * (SEMVER-MINOR) add tools and scripts to pull LIEF as a dependency (Joyee Cheung) #61167 fs: * (SEMVER-MINOR) add ignore option to fs.watch (Matteo Collina) #61433 sea: * (SEMVER-MINOR) add `--build-sea` to generate SEA directly with Node.js binary (Joyee Cheung) #61167 * (SEMVER-MINOR) split sea binary manipulation code (Joyee Cheung) #61167 sqlite: * (SEMVER-MINOR) enable defensive mode by default (Bart Louwers) #61266 * (SEMVER-MINOR) add sqlite prepare options args (Guilherme Araújo) #61311 src: * use node- prefix on thread names (Stewart X Addison) #61307 test: * (SEMVER-MINOR) migrate to `--build-sea` in existing SEA tests (Joyee Cheung) #61167 * (SEMVER-MINOR) use fixture directories for sea tests (Joyee Cheung) #61167 test_runner: * (SEMVER-MINOR) support expecting a test-case to fail (Jacob Smith) #60669 PR-URL: #61519
Notable changes: crypto: * update root certificates to NSS 3.119 (Node.js GitHub Bot) #61419 deps: * (SEMVER-MINOR) add LIEF as a dependency (Joyee Cheung) #61167 * (SEMVER-MINOR) add tools and scripts to pull LIEF as a dependency (Joyee Cheung) #61167 fs: * (SEMVER-MINOR) add ignore option to fs.watch (Matteo Collina) #61433 sea: * (SEMVER-MINOR) add `--build-sea` to generate SEA directly with Node.js binary (Joyee Cheung) #61167 * (SEMVER-MINOR) split sea binary manipulation code (Joyee Cheung) #61167 sqlite: * (SEMVER-MINOR) enable defensive mode by default (Bart Louwers) #61266 * (SEMVER-MINOR) add sqlite prepare options args (Guilherme Araújo) #61311 src: * use node- prefix on thread names (Stewart X Addison) #61307 test: * (SEMVER-MINOR) migrate to `--build-sea` in existing SEA tests (Joyee Cheung) #61167 * (SEMVER-MINOR) use fixture directories for sea tests (Joyee Cheung) #61167 test_runner: * (SEMVER-MINOR) support expecting a test-case to fail (Jacob Smith) #60669 PR-URL: #61519
Notable changes: crypto: * update root certificates to NSS 3.119 (Node.js GitHub Bot) #61419 deps: * (SEMVER-MINOR) add LIEF as a dependency (Joyee Cheung) #61167 * (SEMVER-MINOR) add tools and scripts to pull LIEF as a dependency (Joyee Cheung) #61167 fs: * (SEMVER-MINOR) add ignore option to fs.watch (Matteo Collina) #61433 sea: * (SEMVER-MINOR) add `--build-sea` to generate SEA directly with Node.js binary (Joyee Cheung) #61167 * (SEMVER-MINOR) split sea binary manipulation code (Joyee Cheung) #61167 sqlite: * (SEMVER-MINOR) enable defensive mode by default (Bart Louwers) #61266 * (SEMVER-MINOR) add sqlite prepare options args (Guilherme Araújo) #61311 src: * use node- prefix on thread names (Stewart X Addison) #61307 test: * (SEMVER-MINOR) migrate to `--build-sea` in existing SEA tests (Joyee Cheung) #61167 * (SEMVER-MINOR) use fixture directories for sea tests (Joyee Cheung) #61167 test_runner: * (SEMVER-MINOR) support expecting a test-case to fail (Jacob Smith) #60669 PR-URL: #61519
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [node](https://nodejs.org) ([source](https://github.com/nodejs/node)) | minor | `25.4.0` → `25.5.0` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>nodejs/node (node)</summary> ### [`v25.5.0`](https://github.com/nodejs/node/releases/tag/v25.5.0): 2026-01-26, Version 25.5.0 (Current), @​aduh95 [Compare Source](nodejs/node@v25.4.0...v25.5.0) ##### Notable Changes - \[[`99a4e51f93`](nodejs/node@99a4e51f93)] - **crypto**: update root certificates to NSS 3.119 (Node.js GitHub Bot) [#​61419](nodejs/node#61419) - \[[`fbe4da5725`](nodejs/node@fbe4da5725)] - **(SEMVER-MINOR)** **deps**: add LIEF as a dependency (Joyee Cheung) [#​61167](nodejs/node#61167) - \[[`0feab0f083`](nodejs/node@0feab0f083)] - **(SEMVER-MINOR)** **deps**: add tools and scripts to pull LIEF as a dependency (Joyee Cheung) [#​61167](nodejs/node#61167) - \[[`e91b296001`](nodejs/node@e91b296001)] - **(SEMVER-MINOR)** **fs**: add ignore option to fs.watch (Matteo Collina) [#​61433](nodejs/node#61433) - \[[`b351910af1`](nodejs/node@b351910af1)] - **(SEMVER-MINOR)** **sea**: add `--build-sea` to generate SEA directly with Node.js binary (Joyee Cheung) [#​61167](nodejs/node#61167) - \[[`957292e233`](nodejs/node@957292e233)] - **(SEMVER-MINOR)** **sea**: split sea binary manipulation code (Joyee Cheung) [#​61167](nodejs/node#61167) - \[[`f289817ff8`](nodejs/node@f289817ff8)] - **(SEMVER-MINOR)** **sqlite**: enable defensive mode by default (Bart Louwers) [#​61266](nodejs/node#61266) - \[[`069f3603e2`](nodejs/node@069f3603e2)] - **(SEMVER-MINOR)** **sqlite**: add sqlite prepare options args (Guilherme Araújo) [#​61311](nodejs/node#61311) - \[[`5a984b9a09`](nodejs/node@5a984b9a09)] - **src**: use node- prefix on thread names (Stewart X Addison) [#​61307](nodejs/node#61307) - \[[`75c06bc2a8`](nodejs/node@75c06bc2a8)] - **(SEMVER-MINOR)** **test**: migrate to `--build-sea` in existing SEA tests (Joyee Cheung) [#​61167](nodejs/node#61167) - \[[`cabd58f1cb`](nodejs/node@cabd58f1cb)] - **(SEMVER-MINOR)** **test**: use fixture directories for sea tests (Joyee Cheung) [#​61167](nodejs/node#61167) - \[[`ff1fcabfc9`](nodejs/node@ff1fcabfc9)] - **(SEMVER-MINOR)** **test\_runner**: support expecting a test-case to fail (Jacob Smith) [#​60669](nodejs/node#60669) ##### Commits - \[[`778a56f3c9`](nodejs/node@778a56f3c9)] - **assert,util**: fix deep comparison for sets and maps with mixed types (Ruben Bridgewater) [#​61388](nodejs/node#61388) - \[[`32cd18e37f`](nodejs/node@32cd18e37f)] - **async\_hooks**: enabledHooksExist shall return if hooks are enabled (Gerhard Stöbich) [#​61054](nodejs/node#61054) - \[[`482b2568bc`](nodejs/node@482b2568bc)] - **benchmark**: add SQLite benchmarks (Guilherme Araújo) [#​61401](nodejs/node#61401) - \[[`e9a34263bb`](nodejs/node@e9a34263bb)] - **buffer**: make methods work on Uint8Array instances (Neal Beeken) [#​56578](nodejs/node#56578) - \[[`8255cdefcf`](nodejs/node@8255cdefcf)] - **build**: add `--shared-nbytes` configure flag (Antoine du Hamel) [#​61341](nodejs/node#61341) - \[[`8dd379d110`](nodejs/node@8dd379d110)] - **build**: update android-patches/trap-handler.h.patch (Mo Luo) [#​60369](nodejs/node#60369) - \[[`1b4b5eb0e4`](nodejs/node@1b4b5eb0e4)] - **build**: update devcontainer.json to use paired nix env (Joyee Cheung) [#​61414](nodejs/node#61414) - \[[`86e2a763ad`](nodejs/node@86e2a763ad)] - **build**: infer cargo mode with gyp var build\_type directly (Chengzhong Wu) [#​61354](nodejs/node#61354) - \[[`7e211e6942`](nodejs/node@7e211e6942)] - **build**: add embedtest into native suite (Joyee Cheung) [#​61357](nodejs/node#61357) - \[[`637470e79f`](nodejs/node@637470e79f)] - **build**: fix misplaced comma in ldflags (hqzing) [#​61294](nodejs/node#61294) - \[[`a1a0f77a45`](nodejs/node@a1a0f77a45)] - **build**: fix crate vendor file checksums on windows (Chengzhong Wu) [#​61329](nodejs/node#61329) - \[[`d597b8e342`](nodejs/node@d597b8e342)] - **build,tools**: fix addon build deadlock on errors (Vladimir Morozov) [#​61321](nodejs/node#61321) - \[[`b5cdc27ba4`](nodejs/node@b5cdc27ba4)] - **build,win**: improve logs when ClangCL is missing (Mike McCready) [#​61438](nodejs/node#61438) - \[[`ef01f0c033`](nodejs/node@ef01f0c033)] - **build,win**: update WinGet configurations to Python 3.14 (Mike McCready) [#​61431](nodejs/node#61431) - \[[`d8a1cdeefe`](nodejs/node@d8a1cdeefe)] - **child\_process**: treat ipc length header as unsigned uint32 (Ryuhei Shima) [#​61344](nodejs/node#61344) - \[[`588b00fafa`](nodejs/node@588b00fafa)] - **cluster**: fix port reuse between cluster (Ryuhei Shima) [#​60141](nodejs/node#60141) - \[[`99a4e51f93`](nodejs/node@99a4e51f93)] - **crypto**: update root certificates to NSS 3.119 (Node.js GitHub Bot) [#​61419](nodejs/node#61419) - \[[`048f7a5c9c`](nodejs/node@048f7a5c9c)] - **deps**: upgrade npm to 11.8.0 (npm team) [#​61466](nodejs/node#61466) - \[[`fbe4da5725`](nodejs/node@fbe4da5725)] - **(SEMVER-MINOR)** **deps**: add LIEF as a dependency (Joyee Cheung) [#​61167](nodejs/node#61167) - \[[`0feab0f083`](nodejs/node@0feab0f083)] - **(SEMVER-MINOR)** **deps**: add tools and scripts to pull LIEF as a dependency (Joyee Cheung) [#​61167](nodejs/node#61167) - \[[`4bb00d7e3c`](nodejs/node@4bb00d7e3c)] - **deps**: update googletest to [`8508785`](nodejs/node@8508785) (Node.js GitHub Bot) [#​61417](nodejs/node#61417) - \[[`6a3c614f27`](nodejs/node@6a3c614f27)] - **deps**: update sqlite to 3.51.2 (Node.js GitHub Bot) [#​61339](nodejs/node#61339) - \[[`13c0397d6d`](nodejs/node@13c0397d6d)] - **deps**: update icu to 78.2 (Node.js GitHub Bot) [#​60523](nodejs/node#60523) - \[[`098ec6f196`](nodejs/node@098ec6f196)] - **deps**: update ada to v3.4.0 (Yagiz Nizipli) [#​61315](nodejs/node#61315) - \[[`320b576125`](nodejs/node@320b576125)] - **deps**: update zlib to 1.3.1-e00f703 (Node.js GitHub Bot) [#​61135](nodejs/node#61135) - \[[`98f5e7cf51`](nodejs/node@98f5e7cf51)] - **deps**: V8: cherry-pick [highway@`dcc0ca1`](https://github.com/highway/node/commit/dcc0ca1cd42) (Richard Lau) [#​61008](nodejs/node#61008) - \[[`e326df79c9`](nodejs/node@e326df79c9)] - **deps**: V8: backport [`209d2db`](nodejs/node@209d2db9e24a) (Zhijin Zeng) [#​61322](nodejs/node#61322) - \[[`ccfd9d9b30`](nodejs/node@ccfd9d9b30)] - **doc**: remove `v` prefix for version references (Mike McCready) [#​61488](nodejs/node#61488) - \[[`b6cc5d77a1`](nodejs/node@b6cc5d77a1)] - **doc**: mention constructor comparison in assert.deepStrictEqual (Hamza Kargin) [#​60253](nodejs/node#60253) - \[[`236d7ee635`](nodejs/node@236d7ee635)] - **doc**: add CVE delay mention (Rafael Gonzaga) [#​61465](nodejs/node#61465) - \[[`0729fb6ee7`](nodejs/node@0729fb6ee7)] - **doc**: update previous version links in BUILDING (Mike McCready) [#​61457](nodejs/node#61457) - \[[`0fb464252f`](nodejs/node@0fb464252f)] - **doc**: include OpenJSF handle for security stewards (Rafael Gonzaga) [#​61454](nodejs/node#61454) - \[[`3331bdca7c`](nodejs/node@3331bdca7c)] - **doc**: clarify process.argv\[1] behavior for -e/--eval (Jeevankumar S) [#​61366](nodejs/node#61366) - \[[`94b34c38e2`](nodejs/node@94b34c38e2)] - **doc**: remove Windows Dev Home instructions from BUILDING (Mike McCready) [#​61434](nodejs/node#61434) - \[[`a17016ee81`](nodejs/node@a17016ee81)] - **doc**: clarify TypedArray properties on Buffer (Roman Reiss) [#​61355](nodejs/node#61355) - \[[`214fac9d7e`](nodejs/node@214fac9d7e)] - **doc**: update Python 3.14 manual install instructions (Windows) (Mike McCready) [#​61428](nodejs/node#61428) - \[[`6a32a685a6`](nodejs/node@6a32a685a6)] - **doc**: note resume build should not be done on node-test-commit (Stewart X Addison) [#​61373](nodejs/node#61373) - \[[`2a8e8dfaf3`](nodejs/node@2a8e8dfaf3)] - **doc**: refine WebAssembly error documentation (sangwook) [#​61382](nodejs/node#61382) - \[[`f3caf27f8b`](nodejs/node@f3caf27f8b)] - **doc**: add deprecation history for url.parse (Eng Zer Jun) [#​61389](nodejs/node#61389) - \[[`5ab8057856`](nodejs/node@5ab8057856)] - **doc**: add marco and rafael in last sec release (Marco Ippolito) [#​61383](nodejs/node#61383) - \[[`f83cb1e785`](nodejs/node@f83cb1e785)] - **doc**: packages: example of private import switch to internal (coderaiser) [#​61343](nodejs/node#61343) - \[[`3d23bcd0e2`](nodejs/node@3d23bcd0e2)] - **doc**: add esm and cjs examples to node:v8 (Alfredo González) [#​61328](nodejs/node#61328) - \[[`1d159550e0`](nodejs/node@1d159550e0)] - **doc**: added 'secure' event to tls.TLSSocket (ikeyan) [#​61066](nodejs/node#61066) - \[[`90080d2892`](nodejs/node@90080d2892)] - **doc**: restore [@​watilde](https://github.com/watilde) to collaborators (Daijiro Wachi) [#​61350](nodejs/node#61350) - \[[`a87f7a50f8`](nodejs/node@a87f7a50f8)] - **doc**: run license-builder (github-actions\[bot]) [#​61348](nodejs/node#61348) - \[[`adf5c84701`](nodejs/node@adf5c84701)] - **doc**: clean up writing-and-running-benchmarks.md (Hardanish Singh) [#​61345](nodejs/node#61345) - \[[`2be98add0c`](nodejs/node@2be98add0c)] - **doc**: document ALPNCallback option for TLSSocket constructor (ikeyan) [#​61331](nodejs/node#61331) - \[[`2db4893c8d`](nodejs/node@2db4893c8d)] - **esm**: ensure watch mode restarts after syntax errors (Xavier Stouder) [#​61232](nodejs/node#61232) - \[[`828feb2e6b`](nodejs/node@828feb2e6b)] - **events**: remove redundant todo (Gürgün Dayıoğlu) [#​60595](nodejs/node#60595) - \[[`e91b296001`](nodejs/node@e91b296001)] - **(SEMVER-MINOR)** **fs**: add ignore option to fs.watch (Matteo Collina) [#​61433](nodejs/node#61433) - \[[`606184fae5`](nodejs/node@606184fae5)] - **fs**: remove duplicate getValidatedPath calls (Mert Can Altin) [#​61359](nodejs/node#61359) - \[[`434fcd7f8f`](nodejs/node@434fcd7f8f)] - **fs**: fix errorOnExist behavior for directory copy in fs.cp (Nicholas Paun) [#​60946](nodejs/node#60946) - \[[`bacba16f5e`](nodejs/node@bacba16f5e)] - **fs**: fix ENOTDIR in globSync when file is treated as dir (sangwook) [#​61259](nodejs/node#61259) - \[[`7697ce0310`](nodejs/node@7697ce0310)] - **fs**: remove duplicate fd validation in sync functions (Mert Can Altin) [#​61361](nodejs/node#61361) - \[[`8abd54f597`](nodejs/node@8abd54f597)] - **gyp**: aix: change gcc version detection so CXX="ccache g++" works (Stewart X Addison) [#​61464](nodejs/node#61464) - \[[`24033ee7ea`](nodejs/node@24033ee7ea)] - **http**: fix rawHeaders exceeding maxHeadersCount limit (Max Harari) [#​61285](nodejs/node#61285) - \[[`cf56327939`](nodejs/node@cf56327939)] - **http2**: validate initialWindowSize per HTTP/2 spec (Matteo Collina) [#​61402](nodejs/node#61402) - \[[`696935eeeb`](nodejs/node@696935eeeb)] - **inspector**: initial support storage inspection (Ryuhei Shima) [#​61139](nodejs/node#61139) - \[[`3d5e718e38`](nodejs/node@3d5e718e38)] - **lib**: fix typo in `util.js` comment (Taejin Kim) [#​61365](nodejs/node#61365) - \[[`f55a5fea00`](nodejs/node@f55a5fea00)] - **lib**: fix TypeScript support check in jitless mode (sangwook) [#​61382](nodejs/node#61382) - \[[`b3fbc3c375`](nodejs/node@b3fbc3c375)] - **meta**: do not fast-track npm updates (Antoine du Hamel) [#​61475](nodejs/node#61475) - \[[`2423ecdaef`](nodejs/node@2423ecdaef)] - **meta**: fix typos in issue template config (Daijiro Wachi) [#​61399](nodejs/node#61399) - \[[`e2df85a33a`](nodejs/node@e2df85a33a)] - **meta**: label v8 module MRs (René) [#​61325](nodejs/node#61325) - \[[`bc9e5f7d4d`](nodejs/node@bc9e5f7d4d)] - **node-api**: fix node\_api\_create\_object\_with\_properties name (Vladimir Morozov) [#​61319](nodejs/node#61319) - \[[`4f30c21c59`](nodejs/node@4f30c21c59)] - **node-api**: use Node-API in comments (Vladimir Morozov) [#​61320](nodejs/node#61320) - \[[`62d71eb28d`](nodejs/node@62d71eb28d)] - **quic**: copy options.certs buffer instead of detaching (Chengzhong Wu) [#​61403](nodejs/node#61403) - \[[`4bbbe75ba1`](nodejs/node@4bbbe75ba1)] - **quic**: move quic behind compile time flag (Matteo Collina) [#​61444](nodejs/node#61444) - \[[`b351910af1`](nodejs/node@b351910af1)] - **(SEMVER-MINOR)** **sea**: add --build-sea to generate SEA directly with Node.js binary (Joyee Cheung) [#​61167](nodejs/node#61167) - \[[`957292e233`](nodejs/node@957292e233)] - **(SEMVER-MINOR)** **sea**: split sea binary manipulation code (Joyee Cheung) [#​61167](nodejs/node#61167) - \[[`f289817ff8`](nodejs/node@f289817ff8)] - **(SEMVER-MINOR)** **sqlite**: enable defensive mode by default (Bart Louwers) [#​61266](nodejs/node#61266) - \[[`6442229880`](nodejs/node@6442229880)] - **sqlite**: add some tests (Guilherme Araújo) [#​61410](nodejs/node#61410) - \[[`069f3603e2`](nodejs/node@069f3603e2)] - **(SEMVER-MINOR)** **sqlite**: add sqlite prepare options args (Guilherme Araújo) [#​61311](nodejs/node#61311) - \[[`df02d00d61`](nodejs/node@df02d00d61)] - **src**: improve StringBytes::Encode perf on UTF8 (Сковорода Никита Андреевич) [#​61131](nodejs/node#61131) - \[[`e35814ba80`](nodejs/node@e35814ba80)] - **src**: add missing override specifier to Clean() (Tobias Nießen) [#​61429](nodejs/node#61429) - \[[`803ff7d3de`](nodejs/node@803ff7d3de)] - **src**: cache context lookup in vectored io loops (Mert Can Altin) [#​61387](nodejs/node#61387) - \[[`58abe99cbf`](nodejs/node@58abe99cbf)] - **src**: cache missing package.json files in the C++ package config cache (Michael Smith) [#​60425](nodejs/node#60425) - \[[`2a542094e4`](nodejs/node@2a542094e4)] - **src**: use starts\_with instead of rfind/find (Tobias Nießen) [#​61426](nodejs/node#61426) - \[[`77cacf6d9d`](nodejs/node@77cacf6d9d)] - **src**: use C++ nullptr in sqlite (Tobias Nießen) [#​61416](nodejs/node#61416) - \[[`344cc629d4`](nodejs/node@344cc629d4)] - **src**: use C++ nullptr in webstorage (Tobias Nießen) [#​61407](nodejs/node#61407) - \[[`9f25cad26c`](nodejs/node@9f25cad26c)] - **src**: fix pointer alignment (jhofstee) [#​61336](nodejs/node#61336) - \[[`5a984b9a09`](nodejs/node@5a984b9a09)] - **src**: use node- prefix on thread names (Stewart X Addison) [#​61307](nodejs/node#61307) - \[[`d4cf423a65`](nodejs/node@d4cf423a65)] - **stream**: export namespace object from internal end-of-stream module (René) [#​61455](nodejs/node#61455) - \[[`7d8232e34c`](nodejs/node@7d8232e34c)] - **test**: add some validation for JSON doc output (Antoine du Hamel) [#​61413](nodejs/node#61413) - \[[`75c06bc2a8`](nodejs/node@75c06bc2a8)] - **(SEMVER-MINOR)** **test**: migrate to --build-sea in existing SEA tests (Joyee Cheung) [#​61167](nodejs/node#61167) - \[[`cabd58f1cb`](nodejs/node@cabd58f1cb)] - **(SEMVER-MINOR)** **test**: use fixture directories for sea tests (Joyee Cheung) [#​61167](nodejs/node#61167) - \[[`bcffca8911`](nodejs/node@bcffca8911)] - **test**: aix: mark test\_threadsafe\_function/test flaky on AIX (Stewart X Addison) [#​61452](nodejs/node#61452) - \[[`29399501c1`](nodejs/node@29399501c1)] - **test**: add implicit test for fs dispose handling with using (Ilyas Shabi) [#​61140](nodejs/node#61140) - \[[`3bb481571a`](nodejs/node@3bb481571a)] - **test**: reveal wpt evaluation errors in status files (Chengzhong Wu) [#​61358](nodejs/node#61358) - \[[`a132be7f71`](nodejs/node@a132be7f71)] - **test**: check new WebCryptoAPI enum values (Filip Skokan) [#​61406](nodejs/node#61406) - \[[`72f1463735`](nodejs/node@72f1463735)] - **test**: split test-esm-loader-hooks (Joyee Cheung) [#​61374](nodejs/node#61374) - \[[`39105e4c5f`](nodejs/node@39105e4c5f)] - **test**: aix: mark test-emit-on-destroyed as flaky (Stewart X Addison) [#​61381](nodejs/node#61381) - \[[`3f17acfb1c`](nodejs/node@3f17acfb1c)] - **test**: add webidl web-platform tests (Yagiz Nizipli) [#​61316](nodejs/node#61316) - \[[`89983cf747`](nodejs/node@89983cf747)] - **test**: update url web-platform tests (Yagiz Nizipli) [#​61315](nodejs/node#61315) - \[[`73c0a242d7`](nodejs/node@73c0a242d7)] - **test**: forbid use of named imports for fixtures (Antoine du Hamel) [#​61228](nodejs/node#61228) - \[[`a49d54308e`](nodejs/node@a49d54308e)] - **test**: enforce better never-settling-promise detection (Antoine du Hamel) [#​60976](nodejs/node#60976) - \[[`335cb0b5cc`](nodejs/node@335cb0b5cc)] - **test**: ensure assertions are reached on all tests (Antoine du Hamel) [#​60845](nodejs/node#60845) - \[[`5ee02c789a`](nodejs/node@5ee02c789a)] - **test**: ensure assertions are reached on more tests (Antoine du Hamel) [#​60763](nodejs/node#60763) - \[[`141fb82ffb`](nodejs/node@141fb82ffb)] - **test**: ensure assertions are reached on more tests (Antoine du Hamel) [#​60760](nodejs/node#60760) - \[[`edf90ce457`](nodejs/node@edf90ce457)] - **test**: use `RegExp.escape` to improve test reliability (Antoine du Hamel) [#​60803](nodejs/node#60803) - \[[`f5f9b2dcf6`](nodejs/node@f5f9b2dcf6)] - **test**: ensure assertions are reached on more tests (Antoine du Hamel) [#​60728](nodejs/node#60728) - \[[`ec1cbbe0b6`](nodejs/node@ec1cbbe0b6)] - **test\_runner**: fix memory leaks in runner (Abhishek Kv. Savani) [#​60860](nodejs/node#60860) - \[[`399ac68427`](nodejs/node@399ac68427)] - **test\_runner**: fix coverage report when a directory is named file (Heath Dutton🕴️) [#​61169](nodejs/node#61169) - \[[`6e1beda333`](nodejs/node@6e1beda333)] - **test\_runner**: print info when test restarts (Xavier Stouder) [#​61160](nodejs/node#61160) - \[[`f5803ccb86`](nodejs/node@f5803ccb86)] - **test\_runner**: fix rerun ambiguous test failures (Moshe Atlow) [#​61392](nodejs/node#61392) - \[[`a5a4c3eb44`](nodejs/node@a5a4c3eb44)] - **test\_runner**: nix dead reporter code (Vas Sudanagunta) [#​59700](nodejs/node#59700) - \[[`ff1fcabfc9`](nodejs/node@ff1fcabfc9)] - **(SEMVER-MINOR)** **test\_runner**: support expecting a test-case to fail (Jacob Smith) [#​60669](nodejs/node#60669) - \[[`ade4fc2338`](nodejs/node@ade4fc2338)] - **tools**: copyedit Nix files (Antoine du Hamel) [#​61447](nodejs/node#61447) - \[[`7c2242beb9`](nodejs/node@7c2242beb9)] - **tools**: validate release commit diff as part of `lint-release-proposal` (Antoine du Hamel) [#​61440](nodejs/node#61440) - \[[`ca4ebed258`](nodejs/node@ca4ebed258)] - **tools**: use ad-hoc flag to lint Nix files (Antoine du Hamel) [#​61405](nodejs/node#61405) - \[[`05ce2c87f3`](nodejs/node@05ce2c87f3)] - **tools**: fix vcbuild lint-js-build (Vladimir Morozov) [#​61318](nodejs/node#61318) - \[[`41adb54a37`](nodejs/node@41adb54a37)] - **tools**: enforce trailing commas in `test/es-module` (Antoine du Hamel) [#​60891](nodejs/node#60891) - \[[`eebd732a52`](nodejs/node@eebd732a52)] - **tools**: enforce trailing commas in `test/sequential` (Antoine du Hamel) [#​60892](nodejs/node#60892) - \[[`8b73739e03`](nodejs/node@8b73739e03)] - **typings**: add typing for string\_decoder (Taejin Kim) [#​61368](nodejs/node#61368) - \[[`e88dd012ad`](nodejs/node@e88dd012ad)] - **v8**: changing total\_allocated\_bytes to avoid ABI changes (Caio Lima) [#​60800](nodejs/node#60800) - \[[`c75ad3d87d`](nodejs/node@c75ad3d87d)] - **v8**: add GCProfiler support for erm (Ilyas Shabi) [#​61191](nodejs/node#61191) - \[[`611c179663`](nodejs/node@611c179663)] - **zlib**: validate write\_result array length (Ryuhei Shima) [#​61342](nodejs/node#61342) </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 MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi45Mi4xMSIsInVwZGF0ZWRJblZlciI6IjQyLjkyLjExIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiLCJhdXRvbWF0aW9uOmJvdC1hdXRob3JlZCIsImRlcGVuZGVuY3ktdHlwZTo6bWlub3IiXX0=-->
Add an
ignoreoption tofs.watch()to filter filesystem events.Type:
string | RegExp | Function | Array<string | RegExp | Function>