Skip to content

ignore doesn't work if cwd doesn't contain the match results? #186

@slorber

Description

@slorber

While trying to switch Docusaurus to Tinyglobby, our CI reported failures: facebook/docusaurus#11042

It turns out there's a behavior that Tinyglobby has that is slightly different from the original Globby:

const Globby = require("globby");
await Globby(
    '/Users/sebastienlorber/Desktop/projects/docusaurus/packages/docusaurus-theme-classic/src/theme/Tabs/**/*',
    {
      cwd: "/Users/sebastienlorber/Desktop/projects/docusaurus/website",
      ignore: [
        '**/__tests__/*',
      ],
    },
  );

const Tinyglobby = require("tinyglobby").glob;
await Tinyglobby(
    '/Users/sebastienlorber/Desktop/projects/docusaurus/packages/docusaurus-theme-classic/src/theme/Tabs/**/*',
    {
      cwd: "/Users/sebastienlorber/Desktop/projects/docusaurus/website",
      ignore: [
        '**/__tests__/*',
      ],
    },
  );

await Tinyglobby(
    '/Users/sebastienlorber/Desktop/projects/docusaurus/packages/docusaurus-theme-classic/src/theme/Tabs/**/*',
    {
      cwd: "/Users/sebastienlorber/Desktop/projects/docusaurus/website",
      absolute: true,
      ignore: [
        '**/__tests__/*',
      ],
    },
  );

The Node 24 repl output is:

[
  '/Users/sebastienlorber/Desktop/projects/docusaurus/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx',
  '/Users/sebastienlorber/Desktop/projects/docusaurus/packages/docusaurus-theme-classic/src/theme/Tabs/styles.module.css'
]
> 
> 
> 
> const Tinyglobby = require("tinyglobby").glob;
undefined
> await Tinyglobby(
|     '/Users/sebastienlorber/Desktop/projects/docusaurus/packages/docusaurus-theme-classic/src/theme/Tabs/**/*',
|     {
|       cwd: "/Users/sebastienlorber/Desktop/projects/docusaurus/website",
|       ignore: [
|         '**/__tests__/*',
|       ],
|     },
|   );
[
  '../packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx',
  '../packages/docusaurus-theme-classic/src/theme/Tabs/styles.module.css',
  '../packages/docusaurus-theme-classic/src/theme/Tabs/__tests__/index.test.tsx'
]
> 
> await Tinyglobby(
|     '/Users/sebastienlorber/Desktop/projects/docusaurus/packages/docusaurus-theme-classic/src/theme/Tabs/**/*',
|     {
|       cwd: "/Users/sebastienlorber/Desktop/projects/docusaurus/website",
|       absolute: true,
|       ignore: [
|         '**/__tests__/*',
|       ],
|     },
|   );
[
  '/Users/sebastienlorber/Desktop/projects/docusaurus/packages/docusaurus-theme-classic/src/theme/Tabs/index.tsx',
  '/Users/sebastienlorber/Desktop/projects/docusaurus/packages/docusaurus-theme-classic/src/theme/Tabs/styles.module.css',
  '/Users/sebastienlorber/Desktop/projects/docusaurus/packages/docusaurus-theme-classic/src/theme/Tabs/__tests__/index.test.tsx'
]

As you can see, Tinyglobby returns relative paths, and even if we force it to return absolute paths like Globby, it doesn't really ignore the /__tests__/ pattern and returns one extra result that contains that pattern.

If I use cwd: '/Users/sebastienlorber/Desktop/projects/docusaurus' (ie, no ../ in the glob results), then it works as indended.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions