Skip to content
This repository has been archived by the owner on Apr 28, 2020. It is now read-only.

fix(deps): update dependency fast-glob to v3 #39

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from

Conversation

renovate[bot]
Copy link

@renovate renovate bot commented Jul 13, 2019

This PR contains the following updates:

Package Type Update Change
fast-glob dependencies major ^2.2.6 -> ^3.0.0

Release Notes

mrmlnc/fast-glob

v3.2.2

Compare Source

🐛 Bug fixes

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

v3.2.1

Compare Source

💬 Common

v3.2.0

Compare Source

💬 Common

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

🚀 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.

🎉 Thanks

v3.1.1

Compare Source

🐛 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

Compare Source

💬 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)

⚙️ Infrastructure

  • Move from TSLint to ESLint (#​233)

v3.0.4

Compare Source

This is a maintenance release.

💬 Common

  • Set correct default value for the onlyFiles option in the documentation (thanks, @​garyking)
  • Disable the strictSlashes option (internal) for the micromatch package. Related to micromatch/picomatch#​21.

v3.0.3

Compare Source

💬

  • 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)

v3.0.2

Compare Source

The fast-glob3.0.0 was released with one known bug. This release fixes it.

🐛 Bug fixes

High memory usage for very big directories (#​204)
Highlights
  • Entries: 4 000 000
  • Before: 4.1GB of RAM (37s)
  • After: 0.8GB of RAM (25s)
Explanation

In short, we called 2x replace and startsWith on every entry. Together, that's 12 million calls.

v3.0.1

Compare Source

💬 Common

v3.0.0

Compare Source

🌮 Thanks

📑 Summary

This release aims to fix architectural issues, increase performance and reduce size of package.

💣 Breaking changes

Since this is a major release, we are introducing a few breaking changes:

  • Support for the fast-glob@2 is ending.
  • Require Node.js 8+. But we recommend using 10.10+ for performance issues.
  • Only forward-slashes in glob expression. Previously, we convert all slashes to the forward-slashes, which did not allow the use of escaping. See pattern syntax section in the README.md file.
  • Removed options: nobrace, noglobstar, noext, nocase, transform.
  • Renamed options:
  • The deep option now accepts only number type and default value now is Infinity instead of true.
  • The async method was removed. Use fg(/* … */) instead.
  • The type of returned object when the stats option is enabled is completely changed.

🐛 Bug fixes

  • After update from micromatch@3 to micromatch@4:
    • Incorrect matching with curly braces and globstar (#​159).
    • Inaccurate comparison within a regular expression (#​123, #​138).
    • A very long initialization time of filters (#​92).
  • Now we do not convert slashes in the patterns (#​173).
  • Previously, the baseNameMatch option never worked (#​199).

🚀 Improvements

💬 Common
  • Package size after installation is decreased: 2.47MB0.42MB.
  • Package require time decreased: 534ms78ms.
🌪️ Speed

Wow! The new version is very fast. At least twice as fast as the previous version. Probably this is the fastest solution in the Node.js world. And that's not all! We will work on performance issues in the future 🐢.

  • Speed up between versions for directory with 265k entries: 5x (19s → 4s).
  • Speed up between versions for directory with 4kk entries: 4x (4m → 1m).

Look at the benchmarks section in the README.md file.

⚙️ Flexibility

Also in this release we have worked on simplifying some scenarios.

Now, thanks to the new mechanism, you can get the type of entry without additional costs! Works only on Node.js 10.10+. Look at the objectMode option.

🤕 Known issues in this update


Renovate configuration

📅 Schedule: 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.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by WhiteSource Renovate. View repository job log here.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Development

Successfully merging this pull request may close these issues.

1 participant