Fast Glob Versions Save

:rocket: It's a very fast and efficient glob library for Node.js

3.2.5

3 years ago

🐛 Bug fixes

📖 Documentation

  • Fix examples for the markDirectories option (#287, thanks @yarastqt).

⚙️ Infrastructure

  • Use the latest versions of OS in CI (#279).
  • Move from Azure Pipelines to GitHub Actions (#299).

3.2.4

3 years ago

🐛 Bug fixes

  • Fixed a regression in 3.2.3 when the caseSensitiveMatch option is disabled (#276)

3.2.3

3 years ago

🐛 Bug fixes

  • Fixed an issue when the unique option led to incorrect results when mixing static and dynamic patterns (#268)
  • Fixed an issue when the pattern starting with a forward slash (#266)

3.2.2

4 years ago

🐛 Bug fixes

  • Fix a problem with patterns with leading dot segment (like ./… or .\\…) (#257)

3.2.1

4 years ago

💬 Common

  • Temporary fix for #253.

3.2.0

4 years ago

:speech_balloon: Common

  • An empty pattern now causes an error (#247)

:rocket: Improvements

In the #156 issue we've redesigned the deep filter, which controls the reading of directories in depth.

Previously, this filter did not use positive patterns directly (only their maximum depth). The example below shows how many extra directories we read:

{src,fixtures}/**

src → read
fixtures → read
out → read
node_modules → read

Now we apply positive patterns.

{src,fixtures}/**

src → read
fixtures → read
out → skip
node_modules → skip

Synthetic benchmark

More benchmarks can be found here.

{fixtures,out}/{first,second}/*

sync, ms async, ms stream, ms
3.x.x 13 22 20
3.2.0 5 9 8

{fixtures,out}/**

sync, ms async, ms stream, ms
3.x.x 37 49 52
3.2.0 6 10 12

Real world benchmark

  • Globby
  • Prettier
  • {blocks-*,construct}/**/*.styl (a very large project) 13s → 0.16s

Known issues

  • For some cases, there is a noticeable slowdown of 3-6%.
  • Patterns containing {a..z} (or similar) may introduce some slowdown.
  • Actually, fast-glob is 2 times slower than node-glob in this scenario.

We will work on this in the future.

:tada: Thanks

  • @jonschlinkert for the scan method in picomatch that returns parts of the pattern.
  • @fisker for early beta feedback.

3.1.1

4 years ago

🐛 Bug fixes

Stream is not closed when the receiver is closed (#239)

Previously, we read directories in the stream, even after the receiver is closed. Now we stop reading after closing the receiver by .emit('end'), .destroy() or for await...of.

const fg = require('fast-glob');

(async () => {
    const stream = fg.stream('**');

    for await (const entry of stream) {
        console.log(entry);

        return;
    }
})();

Most likely, in future releases, we will improve integration with streams (#243).

v3.1.0

4 years ago

💬 Common

📖 Documentation

🐛 Bug Fixes

  • Matching specific file is not found when pattern contains parentheses (#223)
    • ⚠️ Now we route patterns with escape symbol to dynamic patterns
  • Match subdirectories starting with . in {dot: false} mode (#226)

:gear: Infrastructure

  • Move from TSLint to ESLint (#233)

3.0.4

4 years ago

This is a maintenance release.

💬 Common

3.0.3

4 years ago

💬

  • Correct method for the Stream API in the documentation (#217, thanks @bluelovers)
  • We have divided the benchmark into two types:
    • The product benchmark is a comparison of performance relative to competitors.
    • The regression benchmark is a comparison of performance relative to the previous version.
  • We added a launch of both types of benchmark in CI. Automatically starts only when the master branch is built.
  • Now the smoke tests are run for all API's (sync, async, stream).

🐛 Bug fixes

  • Non-existing directories in the globbing pattern throw an error with the asynchronous API (#211)
  • The markDirectories option adds extra slashes for every directory in the path with the asynchronous API (#214)