diff --git a/src/presets/barrel.ts b/src/presets/barrel.ts index 379b57b..158ba0d 100644 --- a/src/presets/barrel.ts +++ b/src/presets/barrel.ts @@ -50,9 +50,11 @@ export const barrel: Preset<{ const ext = meta.filename.split('.').slice(-1)[0] const pattern = opts.include || `*.{${ext},${ext}x}` + const exclude = Array.isArray(opts.exclude) ? opts.exclude : opts.exclude ? [opts.exclude] : undefined const relativeFiles = glob - .globSync(pattern, {cwd, ignore: opts.exclude}) + // todo[glob>10.3.10]: use exclude directly when https://github.com/isaacs/node-glob/issues/570 is fixed + .globSync(pattern, {cwd, ignore: exclude?.map(e => e.replace(/^\.\//, ''))}) .sort((a, b) => a.localeCompare(b)) .filter(f => path.resolve(cwd, f) !== path.resolve(meta.filename)) .map(f => `./${f}`.replace(/(\.\/)+\./g, '.')) diff --git a/test/presets/barrel.test.ts b/test/presets/barrel.test.ts index 5f5295b..4399b46 100644 --- a/test/presets/barrel.test.ts +++ b/test/presets/barrel.test.ts @@ -75,6 +75,19 @@ test('generates typescript', () => { export * from './b'" `) + expect( + preset.barrel({ + ...params, + options: {exclude: ['./a.ts', './b.ts']}, + }), + ).toMatchInlineSnapshot(` + "export * from './a-util' + export * from './b-util' + export * from './c' + export * from './index' + export * from './util'" + `) + expect( preset.barrel({ ...params,