Migrating from chokidar 3.x to 4.x

A big win recently in the e18e space is that chokidar published a new 4.x version!

This new version drops a whole bunch of dependencies and simplifies the internal logic greatly, leaning more on modern platform capabilities.

For those of you who don’…


This content originally appeared on DEV Community and was authored by James Garbutt

A big win recently in the e18e space is that chokidar published a new 4.x version!

This new version drops a whole bunch of dependencies and simplifies the internal logic greatly, leaning more on modern platform capabilities.

For those of you who don't know what chokidar is - it is a widely used file system watcher which provides an abstraction over the top of Node's own watch functions. More than likely, it is somewhere in your dependency tree already!

Dependency graph difference

In chokidar 3.x:

chokidar 3.x dependency graph

In chokidar 4.x:

chokidar 4.x dependency graph

Changes in 4.x

Most of the changes are internal and shouldn't affect how you use the library, but will improve performance a huge amount.

A few notable changes:

  • fsevents was dropped since Node itself handles cross-platform compatibility well these days
  • ES module support
  • Improved TypeScript types
  • Various performance improvements
  • Glob support removed

The one major change from this list that will affect users is the removal of globs.

Life without globs

In chokidar 3.x, it was possible to watch a glob. For example, we could watch src/*.ts and chokidar would expand the pattern internally to watch all TypeScript files inside src/.

In 4.x, this functionality has been removed since you can achieve the same with filters or an external glob library.

An example:

// chokidar v3
watch('src/*.ts');

// chokidar v4 (RegExp)
watch('src', {
  ignored: /\.ts$/
});

// chokidar v4 (ignore function)
watch('src', {
  ignored: (path, stats) =>
    stats?.isFile() &&
    !path.endsWith('.ts')
});

// chokidar v4 (glob)
import {glob} from 'tinyglobby';
watch(await glob(['src/*.ts']));

In most cases, you can probably avoid the need for a glob library and use a filter function or RegExp instead (which will also be much faster in many cases).

Feedback

If you upgrade and have any feedback or find any bugs, we'd love to hear from you via issues.

You can also catch many of us in the e18e discord working hard on migrating popular packages from 3.x to 4.x.


This content originally appeared on DEV Community and was authored by James Garbutt


Print Share Comment Cite Upload Translate Updates
APA

James Garbutt | Sciencx (2024-09-18T04:16:15+00:00) Migrating from chokidar 3.x to 4.x. Retrieved from https://www.scien.cx/2024/09/18/migrating-from-chokidar-3-x-to-4-x/

MLA
" » Migrating from chokidar 3.x to 4.x." James Garbutt | Sciencx - Wednesday September 18, 2024, https://www.scien.cx/2024/09/18/migrating-from-chokidar-3-x-to-4-x/
HARVARD
James Garbutt | Sciencx Wednesday September 18, 2024 » Migrating from chokidar 3.x to 4.x., viewed ,<https://www.scien.cx/2024/09/18/migrating-from-chokidar-3-x-to-4-x/>
VANCOUVER
James Garbutt | Sciencx - » Migrating from chokidar 3.x to 4.x. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/09/18/migrating-from-chokidar-3-x-to-4-x/
CHICAGO
" » Migrating from chokidar 3.x to 4.x." James Garbutt | Sciencx - Accessed . https://www.scien.cx/2024/09/18/migrating-from-chokidar-3-x-to-4-x/
IEEE
" » Migrating from chokidar 3.x to 4.x." James Garbutt | Sciencx [Online]. Available: https://www.scien.cx/2024/09/18/migrating-from-chokidar-3-x-to-4-x/. [Accessed: ]
rf:citation
» Migrating from chokidar 3.x to 4.x | James Garbutt | Sciencx | https://www.scien.cx/2024/09/18/migrating-from-chokidar-3-x-to-4-x/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.