{"adoption": {"forks": 497, "observed_at": "2026-08-28T04:10:48.214295+00:00", "stars": 11465}, "canonical_url": "https://ross.abutalabs.com/products/tsdx", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Zero-config CLI for TypeScript package development", "domain": ["developer-tools", "web-development", "frontend", "programming-languages"], "enriched": true, "function": ["build-tool", "cli", "testing", "linter", "formatter", "package-manager"], "health_score": 76, "homepage": "https://tsdx.io", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["jaredpalmer/tsdx"], "name": "jaredpalmer/tsdx", "platform": ["cli", "cross-platform"], "pushed_at": "2026-02-09T21:57:35+00:00", "repo": "jaredpalmer/tsdx", "stars": 11465, "tags": ["typescript", "zero-config", "npm-packages", "library-development", "esm", "commonjs", "bunchee", "vitest", "oxlint", "rollup", "react-library", "nodejs"], "topics": ["typescript", "rollup", "npm", "yarn", "react", "packaging", "react-dom", "bundling", "jest"], "urls": [], "use_cases": ["scaffold a new typescript npm package", "build a react component library with dual esm/cjs output", "generate typescript declarations for my library", "set up zero-config linting and testing for a ts package", "watch mode rebuilds for package development", "publish a typescript library without configuring rollup"], "what_it_is": "TSDX is a zero-config CLI for developing, testing, and publishing TypeScript packages, with templates for basic and React libraries. Version 2.0 is a rewrite built on modern Rust-based tooling (bunchee, vitest, oxlint, oxfmt) with bun for package management.", "when_to_avoid": ["you need fine-grained custom bundler configuration", "your project targets Node.js below 20 or doesn't use bun", "you have an existing complex build pipeline already configured", "you're maintaining a legacy v0.x tsdx project without migrating"], "when_to_choose": ["you want a zero-config setup for a new TypeScript library", "you need dual ESM/CJS builds with type declarations out of the box", "you want fast, modern tooling (vitest, oxlint) bundled together", "you're starting a React component library from a template"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/tsdx", "repo": "jaredpalmer/tsdx", "role": "main", "score": 61}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.214295+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:15:34.286156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7703798f22dd3a319e42ab59fc39a77cdc071f2d31ba45a6457409102368b08", "fetched_at": "2026-08-28T04:10:48.214295+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jaredpalmer/tsdx"}, {"content_hash": "8e00645272c2c9647f45b0ceafb4151acf4e604e4d3ca8241c5adb1237e34645", "fetched_at": "2026-08-29T08:14:35.793145+00:00", "kind": "homepage", "missing": false, "url": "https://tsdx.io"}, {"content_hash": "0975ca96cf110cffe9cc6986e7d14d5130926d5430aeec7a84dad87dc9807d09", "fetched_at": "2026-08-29T08:14:35.795600+00:00", "kind": "site_page", "missing": false, "url": "https://tsdx.io/docs"}, {"content_hash": "2c5380b4d9d465bef5d0e8f0f361ca552a8ad52d302764ea44a38a5504738b1b", "fetched_at": "2026-08-29T08:14:35.797280+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/tsdx"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.214295+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:15:34.286156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7703798f22dd3a319e42ab59fc39a77cdc071f2d31ba45a6457409102368b08", "fetched_at": "2026-08-28T04:10:48.214295+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jaredpalmer/tsdx"}, {"content_hash": "8e00645272c2c9647f45b0ceafb4151acf4e604e4d3ca8241c5adb1237e34645", "fetched_at": "2026-08-29T08:14:35.793145+00:00", "kind": "homepage", "missing": false, "url": "https://tsdx.io"}, {"content_hash": "0975ca96cf110cffe9cc6986e7d14d5130926d5430aeec7a84dad87dc9807d09", "fetched_at": "2026-08-29T08:14:35.795600+00:00", "kind": "site_page", "missing": false, "url": "https://tsdx.io/docs"}, {"content_hash": "2c5380b4d9d465bef5d0e8f0f361ca552a8ad52d302764ea44a38a5504738b1b", "fetched_at": "2026-08-29T08:14:35.797280+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/tsdx"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:15:34.286156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7703798f22dd3a319e42ab59fc39a77cdc071f2d31ba45a6457409102368b08", "fetched_at": "2026-08-28T04:10:48.214295+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jaredpalmer/tsdx"}, {"content_hash": "8e00645272c2c9647f45b0ceafb4151acf4e604e4d3ca8241c5adb1237e34645", "fetched_at": "2026-08-29T08:14:35.793145+00:00", "kind": "homepage", "missing": false, "url": "https://tsdx.io"}, {"content_hash": "0975ca96cf110cffe9cc6986e7d14d5130926d5430aeec7a84dad87dc9807d09", "fetched_at": "2026-08-29T08:14:35.795600+00:00", "kind": "site_page", "missing": false, "url": "https://tsdx.io/docs"}, {"content_hash": "2c5380b4d9d465bef5d0e8f0f361ca552a8ad52d302764ea44a38a5504738b1b", "fetched_at": "2026-08-29T08:14:35.797280+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/tsdx"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.214295+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.214295+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.214295+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:15:34.286156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7703798f22dd3a319e42ab59fc39a77cdc071f2d31ba45a6457409102368b08", "fetched_at": "2026-08-28T04:10:48.214295+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jaredpalmer/tsdx"}, {"content_hash": "8e00645272c2c9647f45b0ceafb4151acf4e604e4d3ca8241c5adb1237e34645", "fetched_at": "2026-08-29T08:14:35.793145+00:00", "kind": "homepage", "missing": false, "url": "https://tsdx.io"}, {"content_hash": "0975ca96cf110cffe9cc6986e7d14d5130926d5430aeec7a84dad87dc9807d09", "fetched_at": "2026-08-29T08:14:35.795600+00:00", "kind": "site_page", "missing": false, "url": "https://tsdx.io/docs"}, {"content_hash": "2c5380b4d9d465bef5d0e8f0f361ca552a8ad52d302764ea44a38a5504738b1b", "fetched_at": "2026-08-29T08:14:35.797280+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/tsdx"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.214295+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.214295+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:15:34.286156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7703798f22dd3a319e42ab59fc39a77cdc071f2d31ba45a6457409102368b08", "fetched_at": "2026-08-28T04:10:48.214295+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jaredpalmer/tsdx"}, {"content_hash": "8e00645272c2c9647f45b0ceafb4151acf4e604e4d3ca8241c5adb1237e34645", "fetched_at": "2026-08-29T08:14:35.793145+00:00", "kind": "homepage", "missing": false, "url": "https://tsdx.io"}, {"content_hash": "0975ca96cf110cffe9cc6986e7d14d5130926d5430aeec7a84dad87dc9807d09", "fetched_at": "2026-08-29T08:14:35.795600+00:00", "kind": "site_page", "missing": false, "url": "https://tsdx.io/docs"}, {"content_hash": "2c5380b4d9d465bef5d0e8f0f361ca552a8ad52d302764ea44a38a5504738b1b", "fetched_at": "2026-08-29T08:14:35.797280+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/tsdx"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.214295+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.214295+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.214295+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:15:34.286156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7703798f22dd3a319e42ab59fc39a77cdc071f2d31ba45a6457409102368b08", "fetched_at": "2026-08-28T04:10:48.214295+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jaredpalmer/tsdx"}, {"content_hash": "8e00645272c2c9647f45b0ceafb4151acf4e604e4d3ca8241c5adb1237e34645", "fetched_at": "2026-08-29T08:14:35.793145+00:00", "kind": "homepage", "missing": false, "url": "https://tsdx.io"}, {"content_hash": "0975ca96cf110cffe9cc6986e7d14d5130926d5430aeec7a84dad87dc9807d09", "fetched_at": "2026-08-29T08:14:35.795600+00:00", "kind": "site_page", "missing": false, "url": "https://tsdx.io/docs"}, {"content_hash": "2c5380b4d9d465bef5d0e8f0f361ca552a8ad52d302764ea44a38a5504738b1b", "fetched_at": "2026-08-29T08:14:35.797280+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/tsdx"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.214295+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:48.214295+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:15:34.286156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7703798f22dd3a319e42ab59fc39a77cdc071f2d31ba45a6457409102368b08", "fetched_at": "2026-08-28T04:10:48.214295+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jaredpalmer/tsdx"}, {"content_hash": "8e00645272c2c9647f45b0ceafb4151acf4e604e4d3ca8241c5adb1237e34645", "fetched_at": "2026-08-29T08:14:35.793145+00:00", "kind": "homepage", "missing": false, "url": "https://tsdx.io"}, {"content_hash": "0975ca96cf110cffe9cc6986e7d14d5130926d5430aeec7a84dad87dc9807d09", "fetched_at": "2026-08-29T08:14:35.795600+00:00", "kind": "site_page", "missing": false, "url": "https://tsdx.io/docs"}, {"content_hash": "2c5380b4d9d465bef5d0e8f0f361ca552a8ad52d302764ea44a38a5504738b1b", "fetched_at": "2026-08-29T08:14:35.797280+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/tsdx"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:15:34.286156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7703798f22dd3a319e42ab59fc39a77cdc071f2d31ba45a6457409102368b08", "fetched_at": "2026-08-28T04:10:48.214295+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jaredpalmer/tsdx"}, {"content_hash": "8e00645272c2c9647f45b0ceafb4151acf4e604e4d3ca8241c5adb1237e34645", "fetched_at": "2026-08-29T08:14:35.793145+00:00", "kind": "homepage", "missing": false, "url": "https://tsdx.io"}, {"content_hash": "0975ca96cf110cffe9cc6986e7d14d5130926d5430aeec7a84dad87dc9807d09", "fetched_at": "2026-08-29T08:14:35.795600+00:00", "kind": "site_page", "missing": false, "url": "https://tsdx.io/docs"}, {"content_hash": "2c5380b4d9d465bef5d0e8f0f361ca552a8ad52d302764ea44a38a5504738b1b", "fetched_at": "2026-08-29T08:14:35.797280+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/tsdx"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:15:34.286156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7703798f22dd3a319e42ab59fc39a77cdc071f2d31ba45a6457409102368b08", "fetched_at": "2026-08-28T04:10:48.214295+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jaredpalmer/tsdx"}, {"content_hash": "8e00645272c2c9647f45b0ceafb4151acf4e604e4d3ca8241c5adb1237e34645", "fetched_at": "2026-08-29T08:14:35.793145+00:00", "kind": "homepage", "missing": false, "url": "https://tsdx.io"}, {"content_hash": "0975ca96cf110cffe9cc6986e7d14d5130926d5430aeec7a84dad87dc9807d09", "fetched_at": "2026-08-29T08:14:35.795600+00:00", "kind": "site_page", "missing": false, "url": "https://tsdx.io/docs"}, {"content_hash": "2c5380b4d9d465bef5d0e8f0f361ca552a8ad52d302764ea44a38a5504738b1b", "fetched_at": "2026-08-29T08:14:35.797280+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/tsdx"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:15:34.286156+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c7703798f22dd3a319e42ab59fc39a77cdc071f2d31ba45a6457409102368b08", "fetched_at": "2026-08-28T04:10:48.214295+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jaredpalmer/tsdx"}, {"content_hash": "8e00645272c2c9647f45b0ceafb4151acf4e604e4d3ca8241c5adb1237e34645", "fetched_at": "2026-08-29T08:14:35.793145+00:00", "kind": "homepage", "missing": false, "url": "https://tsdx.io"}, {"content_hash": "0975ca96cf110cffe9cc6986e7d14d5130926d5430aeec7a84dad87dc9807d09", "fetched_at": "2026-08-29T08:14:35.795600+00:00", "kind": "site_page", "missing": false, "url": "https://tsdx.io/docs"}, {"content_hash": "2c5380b4d9d465bef5d0e8f0f361ca552a8ad52d302764ea44a38a5504738b1b", "fetched_at": "2026-08-29T08:14:35.797280+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/tsdx"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 66, "longevity": 100, "rhythm": 31}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2778, "days_push": 205, "days_rel": 247, "gap_med": null, "n_releases_24m": 1}, "score": 61, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}