terkelg / tiny-glob

Super tiny and ~350% faster alternative to node-glob
MIT License
856 stars 25 forks source link

[Feature request] Synchronous support #81

Open lokimckay opened 2 years ago

lokimckay commented 2 years ago

Is it possible to execute tiny-glob synchronously?

My specific use case is in a rollup.config.js file, I need to execute tiny-glob to retrieve a list of file paths, and then use those paths to export a config object. E.g.:

import glob from "tiny-glob";

const components = await glob("src/components/**/*.component.js").then((paths) =>
  paths.map((path) => path.match(/.*[\\\/](.*?).component.js/)[1])
);

export default components.map((component) => ({
  ...
}));

But rollup does not play nice with the await keyword being used

Is there a way to run tiny-glob synchronously? and if not, would this feature be considered for inclusion?

lokimckay commented 2 years ago

For future readers, I reluctantly worked around this issue by switching to this heavier lib fast-glob

StephanBijzitter commented 2 years ago

in the specfic case of rollup, this should work just fine:

(code taken from OP and modified minimally):

import glob from "tiny-glob";

export default (async () => {
  const components = await glob("src/components/**/*.component.js").then((paths) =>
    paths.map((path) => path.match(/.*[\\\/](.*?).component.js/)[1])
  );

  return components.map((component) => ({
    ...
  }));
})();