{"_id":"@asymmetric-effort/steamroller","_rev":"2-8e32f2499e7da3b2343ab79edf276bf1","name":"@asymmetric-effort/steamroller","dist-tags":{"latest":"0.2.8"},"versions":{"0.2.3":{"name":"@asymmetric-effort/steamroller","version":"0.2.3","author":{"name":"Asymmetric Effort","email":"info@asymmetric-effort.com"},"license":"MIT","_id":"@asymmetric-effort/steamroller@0.2.3","maintainers":[{"name":"x684867","email":"npm@samcaldwell.net"},{"name":"samcaldwell","email":"scaldwell@asymmetric-effort.com"}],"homepage":"https://github.com/asymmetric-effort/steamroller#readme","bugs":{"url":"https://github.com/asymmetric-effort/steamroller/issues"},"bin":{"steamroller":"dist/cli/main.js"},"dist":{"shasum":"95553b36b785e212baa6732af2dbf5221e2fde61","tarball":"https://registry.npmjs.org/@asymmetric-effort/steamroller/-/steamroller-0.2.3.tgz","fileCount":713,"integrity":"sha512-eDXkzU7Cq0VFQqxvFBJGN5klwnXcx5X648Wc5S12mY+SgdPXdLNuwjBBTI5EQtN0JTVRRIirqRe2QvH7w8i/rQ==","signatures":[{"sig":"MEUCIGhVnzMTRZiuW2jeuEudA7MSX6PYwWmqMZFu2btS5lfqAiEA127UfKr81O7p3R46+Oe+Vi3po2eKDGVjR1lM/QvJUXE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3212211},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./parseAst":{"types":"./dist/parse-ast.d.ts","import":"./dist/parse-ast.js"},"./parse-ast":{"types":"./dist/parse-ast.d.ts","import":"./dist/parse-ast.js"},"./sourcemap":{"types":"./dist/sourcemap.d.ts","import":"./dist/sourcemap.js"}},"gitHead":"c1409a22fff01659c0ea74d058a48f2b1d857640","scripts":{"lint":"prettier --check .","test":"vitest run --coverage","build":"tsc","clean":"rm -rf dist coverage","format":"prettier --write .","benchmark":"vitest bench benchmarks/","typecheck":"tsc --noEmit","prepublishOnly":"npm run clean && npm run lint && npm run typecheck && npm run build && npm run test"},"_npmUser":{"name":"samcaldwell","email":"scaldwell@asymmetric-effort.com"},"repository":{"url":"git+https://github.com/asymmetric-effort/steamroller.git","type":"git"},"_npmVersion":"11.16.0","description":"A zero-dependency JavaScript bundler","directories":{},"_nodeVersion":"26.3.1","_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.9","prettier":"^3.8.4","typescript":"^5.8.0","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.9"},"_npmOperationalInternal":{"tmp":"tmp/steamroller_0.2.3_1782597504524_0.34145914894278806","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@asymmetric-effort/steamroller","version":"0.2.8","description":"A zero-dependency JavaScript bundler","license":"MIT","author":{"name":"Asymmetric Effort","email":"info@asymmetric-effort.com"},"repository":{"type":"git","url":"git+https://github.com/asymmetric-effort/steamroller.git"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./parseAst":{"types":"./dist/parse-ast.d.ts","import":"./dist/parse-ast.js"},"./parse-ast":{"types":"./dist/parse-ast.d.ts","import":"./dist/parse-ast.js"},"./sourcemap":{"types":"./dist/sourcemap.d.ts","import":"./dist/sourcemap.js"}},"bin":{"steamroller":"dist/cli/main.js"},"scripts":{"build":"tsc","test":"bun test --isolate tests/unit tests/integration tests/e2e tests/compat","lint":"prettier --check .","typecheck":"tsc --noEmit","format":"prettier --write .","benchmark":"bun test benchmarks/","clean":"rm -rf dist coverage","prepublishOnly":"npm run clean && npm run lint && npm run typecheck && npm run build && npm run test"},"engines":{"node":">=24"},"devDependencies":{"@asymmetric-effort/nogginlessdom":"0.0.28","@types/node":"^26.1.0","prettier":"^3.9.4","typescript":"^5.8.0"},"gitHead":"01d4318e1b14ef5f1b710c8bd3f21a3ee8b91317","_id":"@asymmetric-effort/steamroller@0.2.8","bugs":{"url":"https://github.com/asymmetric-effort/steamroller/issues"},"homepage":"https://github.com/asymmetric-effort/steamroller#readme","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-e/JcEKoJNEhox1wUpTopHAm0SRD762CAfYu10yai99NdlOr8fkm45RfwyByxTQEjEu8na2ciIRPBG9YGjVlE3g==","shasum":"5e2b8f981a6f4352e3b45ae9b5dc98dbbddaa14d","tarball":"https://registry.npmjs.org/@asymmetric-effort/steamroller/-/steamroller-0.2.8.tgz","fileCount":713,"unpackedSize":3216024,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asymmetric-effort%2fsteamroller@0.2.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDyNoeX8t6GvZ76V7iT4iYVGTLlO3P0SvE/vt2UgG78iAIgXXmBR5FFmcU3LeA4raSdZIdNzeOeHUaEcdO8DKhUW/U="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7c2b904d-8826-4456-b82c-a912fb5bec1a"}},"directories":{},"maintainers":[{"name":"x684867","email":"npm@samcaldwell.net"},{"name":"samcaldwell","email":"scaldwell@asymmetric-effort.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/steamroller_0.2.8_1784172907789_0.8859698573502084"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-27T21:58:24.385Z","modified":"2026-07-16T03:35:08.306Z","0.2.3":"2026-06-27T21:58:24.694Z","0.2.8":"2026-07-16T03:35:07.975Z"},"bugs":{"url":"https://github.com/asymmetric-effort/steamroller/issues"},"author":{"name":"Asymmetric Effort","email":"info@asymmetric-effort.com"},"license":"MIT","homepage":"https://github.com/asymmetric-effort/steamroller#readme","repository":{"type":"git","url":"git+https://github.com/asymmetric-effort/steamroller.git"},"description":"A zero-dependency JavaScript bundler","maintainers":[{"name":"x684867","email":"npm@samcaldwell.net"},{"name":"samcaldwell","email":"scaldwell@asymmetric-effort.com"}],"readme":"<p align=\"center\">\n  <img src=\"logo.png\" alt=\"Steamroller\" width=\"128\" height=\"128\">\n</p>\n\n<h1 align=\"center\">Steamroller</h1>\n\n<p align=\"center\">\n  A zero-dependency TypeScript reimplementation of <a href=\"https://rollupjs.org\">rollup</a> with 100% feature parity and 100% API compatibility.\n</p>\n\n## Overview\n\nSteamroller is a JavaScript module bundler that:\n\n- Parses ES module source code into ASTs\n- Builds a module dependency graph\n- Performs statement-level tree-shaking via static analysis\n- Generates optimized output bundles in 6 formats (ES, CJS, UMD, AMD, IIFE, SystemJS)\n- Supports code splitting via dynamic imports and multiple entry points\n- Provides a 27-hook plugin system for extensibility\n- Generates and composes source maps\n- Offers watch mode for incremental rebuilds\n- Exposes a CLI with 80+ flags\n\n## Status\n\n**Pre-release** -- this project is under active development and not yet functional.\n\nSee [PLAN.md](PLAN.md) for the exhaustive implementation plan and [GapAnalysis.md](GapAnalysis.md) for the current gap analysis.\n\n## Design Principles\n\n- **Zero runtime dependencies** -- no `node_modules` at runtime\n- **Pure TypeScript** -- no native code, no WASM, no build-time code generation\n- **Drop-in compatible** -- same API, same types, same behavior as rollup v4.60.4\n- **MIT licensed** -- all code is original\n\n## Installation\n\n```bash\nnpm install @asymmetric-effort/steamroller\n```\n\n## Usage\n\n### JavaScript API\n\n```typescript\nimport { rollup } from \"@asymmetric-effort/steamroller\";\n\nconst bundle = await rollup({\n  input: \"src/main.js\",\n});\n\nawait bundle.write({\n  file: \"dist/bundle.js\",\n  format: \"es\",\n});\n\nawait bundle.close();\n```\n\n### CLI\n\n```bash\nnpx steamroller src/main.js --file dist/bundle.js --format es\n```\n\n### Configuration File\n\n```javascript\n// steamroller.config.mjs\nexport default {\n  input: \"src/main.js\",\n  output: {\n    file: \"dist/bundle.js\",\n    format: \"es\",\n  },\n};\n```\n\n```bash\nnpx steamroller -c\n```\n\n## Compatibility\n\nSteamroller targets 100% feature parity with rollup v4.60.4. After the v1.0.0 release, steamroller versions are independent and may diverge from rollup.\n\n### Plugin Compatibility\n\nSteamroller is compatible with the official `@rollup/plugin-*` ecosystem. Plugins that work with rollup should work with steamroller without modification.\n\n### Migration from Rollup\n\n1. `npm uninstall rollup && npm install @asymmetric-effort/steamroller`\n2. Replace `import { rollup } from 'rollup'` with `import { rollup } from '@asymmetric-effort/steamroller'`\n3. Rename config file (optional -- `rollup.config.*` is still supported)\n4. Replace `npx rollup` with `npx steamroller` in scripts\n\n## Requirements\n\n- Node.js >= 18.0.0\n\n## Development\n\n```bash\ngit clone https://github.com/asymmetric-effort/steamroller.git\ncd steamroller\nnpm install\nnpm run build\nnpm test\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.\n\n## Coding Standards\n\nThis project follows the [Asymmetric Effort Coding Standards](https://coding-standards.asymmetric-effort.com).\n\n## License\n\n[MIT](LICENSE)\n\n## Links\n\n- [GitHub Repository](https://github.com/asymmetric-effort/steamroller)\n- [Issue Tracker](https://github.com/asymmetric-effort/steamroller/issues)\n- [Implementation Plan](PLAN.md)\n- [Gap Analysis](GapAnalysis.md)\n","readmeFilename":"README.md"}