{"_id":"unbarrelify","_rev":"8-97f53c29b11631397070441ee43e2c04","name":"unbarrelify","dist-tags":{"latest":"1.1.4"},"versions":{"0.0.0":{"name":"unbarrelify","version":"0.0.0","_id":"unbarrelify@0.0.0","maintainers":[{"name":"webpro","email":"lars@webpro.nl"}],"dist":{"shasum":"60eeaf4db087215b48c542a3782cfc32d9e8952f","tarball":"https://registry.npmjs.org/unbarrelify/-/unbarrelify-0.0.0.tgz","fileCount":1,"integrity":"sha512-t5ItLFagOdH7R6gaMcNXpgQCVblX9ZCsBn4AXf3saBXVP8Dro+vWWkYfrUWgNdQ9BUVVghxG7i+E7t8RSBh6qw==","signatures":[{"sig":"MEUCIQDJ3njw5NCZSQtdj00ktcI6W2w2vLm8JWioczgStEg/yQIgN3aJhruRwDVQtLDtLGst3OqYMu6zU7hrJJ8CrZDi4a0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50},"_npmUser":{"name":"webpro","email":"lars@webpro.nl"},"_npmVersion":"11.6.2","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/unbarrelify_0.0.0_1768646010457_0.5621159213295372","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"unbarrelify","version":"1.0.0","keywords":["barrel","codemod","ESM","exports","files","imports","index","refactor","rewrite","typescript"],"license":"ISC","_id":"unbarrelify@1.0.0","maintainers":[{"name":"webpro","email":"lars@webpro.nl"}],"bin":{"unbarrelify":"dist/cli.js"},"dist":{"shasum":"c962e93ee7b85fea1ca84184fe2f5513a6254003","tarball":"https://registry.npmjs.org/unbarrelify/-/unbarrelify-1.0.0.tgz","fileCount":36,"integrity":"sha512-6SMhn4bOR7n9Eexc6mMCQb3TmWwC6bmhbrk4Nxw+aWM7ZCK6Ph+vXL6GGE/hbvKzyrz8ju97AYqxOMijb0jC6g==","signatures":[{"sig":"MEUCIQCYFckIOHbv48AzyFXgJ00hb5YK8lOs2xKNc7SQQBfIyAIgJec3n96bUDBgp3853WE/u4R/7Hk6WAcCoD8wv18Q4ME=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91944},"main":"./dist/index.js","type":"module","_from":"file:unbarrelify-1.0.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=20.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"node --test test/**/*.test.ts","build":"tsc"},"_npmUser":{"name":"webpro","email":"lars@webpro.nl"},"_resolved":"/private/var/folders/s2/srv88y2154v5p1fxhn9bw4jm0000gn/T/3f22be6bb20c69b79459c421b7c33a2b/unbarrelify-1.0.0.tgz","_integrity":"sha512-6SMhn4bOR7n9Eexc6mMCQb3TmWwC6bmhbrk4Nxw+aWM7ZCK6Ph+vXL6GGE/hbvKzyrz8ju97AYqxOMijb0jC6g==","_npmVersion":"11.6.2","description":"Barrel file removal tool for JavaScript & TypeScript projects (ESM-only)","directories":{},"_nodeVersion":"24.13.0","dependencies":{"tinyglobby":"^0.2.15","typescript":"^5.9.3","oxc-resolver":"^11.16.3"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.10.9"},"_npmOperationalInternal":{"tmp":"tmp/unbarrelify_1.0.0_1768975227403_0.37250583437056695","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"unbarrelify","version":"1.0.1","keywords":["barrel","codemod","ESM","exports","files","imports","index","refactor","rewrite","typescript"],"license":"ISC","_id":"unbarrelify@1.0.1","maintainers":[{"name":"webpro","email":"lars@webpro.nl"}],"bin":{"unbarrelify":"dist/cli.js"},"dist":{"shasum":"d022343d4d57be7d41ed799e62980f88cd251ea1","tarball":"https://registry.npmjs.org/unbarrelify/-/unbarrelify-1.0.1.tgz","fileCount":36,"integrity":"sha512-Ub9fOS8f0amNS1UR+soiQKspUlvLYtB+uUl/FnGKYuJ0UIy4bxYwDHWoSf0kB0iXr5gHyLaVat5A08ZSqmJ5MA==","signatures":[{"sig":"MEUCIHt+Eznhohu5bngzboO1FPS/Ots/qMF2/0/pg/R4y7llAiEAh7uQCRG1jfVyDtLBXcy2TYwyk+n+TQzItmCNKqqNqsI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90234},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a541c684f2f9f82429f63bf3fd746d04b58eae51","scripts":{"test":"node --test test/**/*.test.ts","build":"tsc","prepack":"tsc"},"_npmUser":{"name":"webpro","email":"lars@webpro.nl"},"_npmVersion":"11.6.2","description":"Barrel file removal tool for JavaScript & TypeScript projects (ESM-only)","directories":{},"_nodeVersion":"24.13.0","dependencies":{"tinyglobby":"^0.2.15","typescript":"^5.9.3","oxc-resolver":"^11.16.3"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.1","devDependencies":{"@types/node":"^24.10.9"},"_npmOperationalInternal":{"tmp":"tmp/unbarrelify_1.0.1_1769411982601_0.15730834494110058","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"unbarrelify","version":"1.1.0","keywords":["barrel","codemod","ESM","exports","files","imports","index","refactor","rewrite","typescript"],"license":"ISC","_id":"unbarrelify@1.1.0","maintainers":[{"name":"webpro","email":"lars@webpro.nl"}],"bin":{"unbarrelify":"dist/cli.js"},"dist":{"shasum":"f5ac48d2462676b6b2c5b6745c086ce2bd3f9545","tarball":"https://registry.npmjs.org/unbarrelify/-/unbarrelify-1.1.0.tgz","fileCount":36,"integrity":"sha512-J/WO5ueM3K88urGXMCeAV1JXqDp6hVO+ebuMkwwGKqQxuIH9TRgI0gOqJFxSH5X4xar8K0h/slLYkV1YKD8laQ==","signatures":[{"sig":"MEQCIEF2rl5U8UMfbLIjfd909FbOVee3mQ6bhf4TSX+6L4gxAiBk5gOHdkFkT+UCdbE848+VOxbE/WDdbrCxXLeGpYAf+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90575},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"9fe522129b30b2b99e5e82a2382b8f9af39d9c1c","scripts":{"test":"node --test test/**/*.test.ts","build":"tsc","prepack":"tsc"},"_npmUser":{"name":"webpro","email":"lars@webpro.nl"},"_npmVersion":"11.6.2","description":"Barrel file removal tool for JavaScript & TypeScript projects (ESM-only)","directories":{},"_nodeVersion":"24.13.0","dependencies":{"tinyglobby":"^0.2.15","typescript":"^5.9.3","oxc-resolver":"^11.16.3"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.1","devDependencies":{"@types/node":"^24.10.9"},"_npmOperationalInternal":{"tmp":"tmp/unbarrelify_1.1.0_1770752559025_0.6966199039555259","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"unbarrelify","version":"1.1.1","keywords":["ESM","barrel","codemod","exports","files","imports","index","refactor","rewrite","typescript"],"license":"ISC","_id":"unbarrelify@1.1.1","maintainers":[{"name":"webpro","email":"lars@webpro.nl"}],"homepage":"https://github.com/webpro-nl/unbarrelify#readme","bugs":{"url":"https://github.com/webpro-nl/unbarrelify/issues"},"bin":{"unbarrelify":"dist/cli.js"},"dist":{"shasum":"e1fee1576cac0c7f4a562029f1247cbebb0c00f6","tarball":"https://registry.npmjs.org/unbarrelify/-/unbarrelify-1.1.1.tgz","fileCount":36,"integrity":"sha512-SHQQx46lpl6S7GclfduQW7lQ2XHBrx7fkzDEoiiQMlxAx/+tPCiaEQZG+ER0y+ig+2kb1UEO8hVhFK7YkzEhrQ==","signatures":[{"sig":"MEQCIFaV/1w+1q823Vpr3IFKKnxDE46EPWDwutjHox9Lb90TAiBQHFNvCOKWoDQGMqaWs2VqsLk1rla9fWIcATllogQnUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91383},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"81e88773d2919d557bd38ecca052cc18e55057b1","scripts":{"lint":"oxlint","test":"node --test test/**/*.test.ts","build":"tsc","format":"oxfmt","prepack":"tsc"},"_npmUser":{"name":"webpro","email":"lars@webpro.nl"},"repository":{"url":"git+https://github.com/webpro-nl/unbarrelify.git","type":"git"},"_npmVersion":"10.9.4","description":"Barrel file removal tool for JavaScript & TypeScript projects (ESM-only)","directories":{},"_nodeVersion":"22.22.0","dependencies":{"tinyglobby":"^0.2.15","typescript":"^5.9.3","oxc-resolver":"^11.16.3"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.28.1","devDependencies":{"oxfmt":"^0.35.0","oxlint":"^1.50.0","@types/node":"^24.10.9"},"_npmOperationalInternal":{"tmp":"tmp/unbarrelify_1.1.1_1772393685720_0.6466400734458486","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"unbarrelify","version":"1.1.2","keywords":["ESM","barrel","codemod","exports","files","imports","index","refactor","rewrite","typescript"],"license":"ISC","_id":"unbarrelify@1.1.2","maintainers":[{"name":"webpro","email":"lars@webpro.nl"}],"homepage":"https://github.com/webpro-nl/unbarrelify#readme","bugs":{"url":"https://github.com/webpro-nl/unbarrelify/issues"},"bin":{"unbarrelify":"dist/cli.js"},"dist":{"shasum":"bcd641ba89d0476a8305ea46cc97f825ff079336","tarball":"https://registry.npmjs.org/unbarrelify/-/unbarrelify-1.1.2.tgz","fileCount":36,"integrity":"sha512-FOhwG8mwOi3Lg5xOP4kLAb8ITjAuruJ6SKPR6BBk75d6ZC+w/vaPSVoF7cTzs4HF5si6hLgCxDUlJWzK64MY9Q==","signatures":[{"sig":"MEUCIQDToYcl2gc3ts/9xTruDdsQnl/XACfKSOtIlne6yl/v4gIgWaz2DKRURbucDrY23DxHOQo3xKuBxc5CViblBwXNjJ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91382},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"33c8059a89dc9022042d3cd8d05c34d468f1db78","scripts":{"lint":"oxlint","test":"node --test test/**/*.test.ts","build":"tsc","format":"oxfmt","prepack":"tsc"},"_npmUser":{"name":"webpro","email":"lars@webpro.nl"},"repository":{"url":"git+https://github.com/webpro-nl/unbarrelify.git","type":"git"},"_npmVersion":"11.11.0","description":"Barrel file removal tool for JavaScript & TypeScript projects (ESM-only)","directories":{},"_nodeVersion":"24.14.1","dependencies":{"tinyglobby":"^0.2.16","typescript":"^6.0.3","oxc-resolver":"^11.19.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.3","devDependencies":{"oxfmt":"^0.50.0","oxlint":"^1.65.0","@types/node":"^24.10.9"},"_npmOperationalInternal":{"tmp":"tmp/unbarrelify_1.1.2_1779179236999_0.27552079016425113","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"unbarrelify","version":"1.1.3","keywords":["ESM","barrel","codemod","exports","files","imports","index","refactor","rewrite","typescript"],"license":"ISC","_id":"unbarrelify@1.1.3","maintainers":[{"name":"webpro","email":"lars@webpro.nl"}],"homepage":"https://github.com/webpro-nl/unbarrelify#readme","bugs":{"url":"https://github.com/webpro-nl/unbarrelify/issues"},"bin":{"unbarrelify":"dist/cli.js"},"dist":{"shasum":"93c68d984c08387db56bc4598fc1661cb9c4e783","tarball":"https://registry.npmjs.org/unbarrelify/-/unbarrelify-1.1.3.tgz","fileCount":36,"integrity":"sha512-L/gZ7IXysi2LLlbp8IPv8EH30z61jVldWjx+BpnEKUccGY/RItoMHF4FaXvG/PdUctysojfIeJGSELSJsvwlcQ==","signatures":[{"sig":"MEUCIQCkyQlKfXcLXkQK7YFP3x+7nknHO4Zdi+UbdmRWD9rEiAIgHBlyKdZmT2Y91rhw+dXz14NI6QoXHH9FUKNcMmf8ZA4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94779},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"8787866167dda27846579186894fb2b274e5506b","scripts":{"lint":"oxlint","test":"node --test test/**/*.test.ts","build":"tsc","format":"oxfmt","prepack":"tsc"},"_npmUser":{"name":"webpro","email":"lars@webpro.nl"},"repository":{"url":"git+https://github.com/webpro-nl/unbarrelify.git","type":"git"},"_npmVersion":"12.0.2","description":"Barrel file removal tool for JavaScript & TypeScript projects (ESM-only)","directories":{},"_nodeVersion":"24.19.0","dependencies":{"tinyglobby":"^0.2.17","typescript":"^6.0.3","oxc-resolver":"^11.24.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.3","devDependencies":{"oxfmt":"^0.65.0","oxlint":"^1.80.0","@types/node":"^26.4.0"},"_npmOperationalInternal":{"tmp":"tmp/unbarrelify_1.1.3_1787912034504_0.6967524574479766","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"_id":"unbarrelify@1.1.4","bin":{"unbarrelify":"dist/cli.js"},"bugs":{"url":"https://github.com/webpro-nl/unbarrelify/issues"},"dist":{"shasum":"c6e21056ae5273c76fbc2a785bd24058126e9c36","tarball":"https://registry.npmjs.org/unbarrelify/-/unbarrelify-1.1.4.tgz","integrity":"sha512-uMAOU5RvJLyy7DYdJZwOCzZ7nYcjYoCXYOhUpvwMzmTmfLHESC4hwRl8FqLy3DxA1sMjj5JQzeRup9yrlWfgpg==","fileCount":36,"unpackedSize":95577,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDgjlbjiMEzF+tbaaahNaVbaqfVLLQ6/gzudFMFHsVbaAiAU79M4lKBugZ96ZI4iLXrcycHJOku7B7nzIMxKw6fIXg=="}]},"main":"./dist/index.js","name":"unbarrelify","type":"module","types":"./dist/index.d.ts","engines":{"node":"^20.19.0 || >=22.12.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"61397052aff6ebf0b8b7e3d57824e738ee8e7e5d","license":"ISC","scripts":{"lint":"oxlint","test":"node --test test/**/*.test.ts","build":"tsc","format":"oxfmt","prepack":"tsc"},"version":"1.1.4","_npmUser":{"name":"webpro","email":"lars@webpro.nl","approver":{"name":"webpro","email":"lars@webpro.nl"}},"homepage":"https://github.com/webpro-nl/unbarrelify#readme","keywords":["ESM","barrel","codemod","exports","files","imports","index","refactor","rewrite","typescript"],"repository":{"url":"git+https://github.com/webpro-nl/unbarrelify.git","type":"git"},"_npmVersion":"12.0.2","description":"Barrel file removal tool for JavaScript & TypeScript projects (ESM-only)","directories":{},"maintainers":[{"name":"webpro","email":"lars@webpro.nl"}],"_nodeVersion":"24.19.0","dependencies":{"tinyglobby":"^0.2.17","typescript":"^6.0.3","oxc-resolver":"^11.24.2"},"packageManager":"pnpm@11.1.3","devDependencies":{"oxfmt":"^0.65.0","oxlint":"^1.80.0","@types/node":"^26.4.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/unbarrelify_1.1.4_1787913907212_0.06763930684405639"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-17T10:33:30.456Z","modified":"2026-08-28T10:45:07.540Z","0.0.0":"2026-01-17T10:33:30.607Z","1.0.0":"2026-01-21T06:00:27.611Z","1.0.1":"2026-01-26T07:19:42.739Z","1.1.0":"2026-02-10T19:42:39.172Z","1.1.1":"2026-03-01T19:34:45.856Z","1.1.2":"2026-05-19T08:27:17.164Z","1.1.3":"2026-08-28T10:13:54.654Z","1.1.4":"2026-08-28T10:45:07.337Z"},"bugs":{"url":"https://github.com/webpro-nl/unbarrelify/issues"},"license":"ISC","homepage":"https://github.com/webpro-nl/unbarrelify#readme","keywords":["ESM","barrel","codemod","exports","files","imports","index","refactor","rewrite","typescript"],"repository":{"url":"git+https://github.com/webpro-nl/unbarrelify.git","type":"git"},"description":"Barrel file removal tool for JavaScript & TypeScript projects (ESM-only)","maintainers":[{"name":"webpro","email":"lars@webpro.nl"}],"readme":"# unbarrelify\n\nBarrel file removal tool for JavaScript & TypeScript projects (ESM-only).\n\n## What are barrel files?\n\nBarrel files are index files that only contain re-exports from other modules:\n\n```ts\nexport { formatDate } from \"./date.ts\";\nexport { formatCurrency } from \"./currency.ts\";\nexport { capitalize } from \"./string.ts\";\n```\n\n## Why avoid barrel files?\n\nBarrel files are convenient, but they often come with trade-offs including:\n\n- Performance and memory: they artificially inflate the module graph and slow down startup times, HMR, and CI pipelines.\n- Tree-shaking failures: they often confuse tree-shakers, risk entire libraries to be bundled when only a single function is needed.\n- Circular dependencies: they frequently create \"import cycles\", crashing bundlers or causing confusing errors.\n\n## Resources\n\n- [Speeding up the JavaScript ecosystem - The barrel file debacle][1] (Marvin Hagemeister, 2023-10-08)\n- [How we optimized package imports in Next.js][2] (Shu Ding, 2023-10-13)\n- [A practical guide against barrel files for library authors][3] (Pascal Schilp, 2024-06-01)\n- [Please Stop Using Barrel Files][4] (Dominik Dorfmeister, 2024-07-26)\n\n## Features\n\n- Automated rewiring of consumers to import directly from source\n- Preserves path aliases\n- Skips barrel files that are entry points (`package.json#exports` etc.)\n- Auto-detects or enforces file extensions to match project style\n- Optional `--organize-imports` to dedupe and clean up after rewrites\n- Granular control with `--skip`, `--only` or add `--barrel`-like files\n- Use `--check` for CI to fail if barrel files are detected\n- Go all out with `--unsafe-namespace` to namespace imports (warning: naive)\n- [Verified on non-trivial repositories][5] to not break the build/tests\n\n## Usage\n\n### Without installation\n\n```sh\nnpx unbarrelify\nnpx unbarrelify --help\n```\n\nIt runs safe in dry-mode until you add `--write`\n\n### Installation\n\n```bash\nnpm install -D unbarrelify\n```\n\n## CLI Usage\n\n```\nunbarrelify - Remove barrel files and rewire imports\n\nUsage: unbarrelify [options]\n\nOptions:\n  -c, --cwd <dir>         Working directory (default: \".\")\n  -o, --only <file>       Process only selected barrel file (can be repeated)\n  -s, --skip <pattern>    Barrel files to skip (glob, can be repeated)\n  -b, --barrel <pattern>  Extra files to treat as barrels (glob, can be repeated)\n  -f, --files <pattern>   Set file coverage (glob, can be repeated, default: use tsconfig.json)\n  -e, --ext <ext>         Extension for rewritten imports (default: auto-detect)\n  -w, --write             Write changes to disk (default: false/dry-run)\n      --organize-imports  Run TypeScript's \"Organize Imports\" after rewrites to dedupe imports\n      --check, --ci       Check mode for CI; non-zero exit if there are changes\n      --unsafe-namespace  Rewrite namespace imports; may include types (bad) and cause identifier collisions (also bad)\n  -h, --help              Show this help message\n\nExamples:\n  unbarrelify\n  unbarrelify --cwd ./src\n  unbarrelify --only ./src/utils/index.ts\n  unbarrelify --skip ./public-api.ts\n  unbarrelify --barrel looks/like/barrel.ts\n  unbarrelify --files \"src/**/*.ts\" --files \"lib/**/*.ts\"\n  unbarrelify --ext .js\n  unbarrelify --write\n  unbarrelify --check\n  unbarrelify --unsafe-namespace\n```\n\n## Programmatic API\n\n```ts\nimport { unbarrelify } from \"unbarrelify\";\n\nconst result = await unbarrelify({\n  cwd: \"./src\",\n  files: [\"**/*.ts\"],\n  skip: [],\n  ext: \".ts\",\n  write: false,\n});\n\nconsole.log(`Modified ${result.modified.length} files`);\nconsole.log(`Deleted ${result.deleted.length} barrel files`);\n```\n\n### API Reference\n\n#### `unbarrelify(options: Options): Promise<Result>`\n\nThe main function that processes files and removes barrel files.\n\n#### `Options`\n\n```ts\ninterface Options {\n  cwd: string;\n  only?: string[];\n  files?: string[];\n  skip?: string[];\n  barrel?: string[];\n  ext?: string;\n  write: boolean;\n  check?: boolean;\n  unsafeNamespace?: boolean;\n  organizeImports?: boolean;\n  progress?: (event: ProgressEvent) => void;\n}\n```\n\n#### `Result`\n\n```ts\ninterface Result {\n  modified: string[];\n  deleted: string[];\n  preserved: PreservedBarrel[];\n}\n\ninterface PreservedBarrel {\n  path: string;\n  reason: \"skip\" | \"namespace-import\" | \"non-ts-import\" | \"dynamic-import\";\n  consumers: string[];\n}\n```\n\n## How does it work?\n\n1. Identify barrel files (files containing only re-export statements)\n2. Build import/export maps to track dependencies\n3. Rewire imports in consuming files to point directly to exporting source files\n4. Remove barrel files\n\n### Before\n\n```ts\n// utils/index.ts\nexport { formatDate } from \"./date.ts\";\nexport { capitalize } from \"./string.ts\";\n\n// module.ts\nimport { formatDate, capitalize } from \"./utils/index.ts\";\n```\n\n### After\n\n```ts\n// utils/index.ts - DELETED\n\n// module.ts\nimport { formatDate } from \"./utils/date.ts\";\nimport { capitalize } from \"./utils/string.ts\";\n```\n\n## Preserved barrel files\n\nThis prevents barrel files from getting deleted:\n\n- File is in `package.json` such as `main` or `exports` field.\n- File is `index.*` at root level (of each workspace).\n- File is in `--skip` argument.\n- Dynamic import calls are not modified, so the imported barrel file is not deleted (e.g. `import(\"barrel.ts\")`).\n- Non-JS/TS files are not modified, so the imported barrel file is not deleted (e.g. `*.mdx`).\n- Namespace imports are not modified, use `--unsafe-namespace` to rewrite (e.g. `import * as NS from \"barrel\"`).\n\nThe output in CLI prints \"Preserved barrel files\" with details.\n\n## License\n\nISC\n\n[1]: https://marvinh.dev/blog/speeding-up-javascript-ecosystem-part-7/\n[2]: https://vercel.com/blog/how-we-optimized-package-imports-in-next-js\n[3]: https://dev.to/thepassle/a-practical-guide-against-barrel-files-for-library-authors-118c\n[4]: https://tkdodo.eu/blog/please-stop-using-barrel-files\n[5]: https://github.com/webpro/unbarrelify/blob/main/.github/workflows/integration.yml\n","readmeFilename":"README.md"}