{"_id":"turborepo-summary","_rev":"4-e99c4ff69ee3ccf3ed881cff1b3314d6","name":"turborepo-summary","dist-tags":{"latest":"1.1.0"},"versions":{"0.0.1":{"name":"turborepo-summary","version":"0.0.1","keywords":["turborepo","turbo","summary","report","markdown","json"],"author":{"name":"Nicolas Charpentier","email":"nicolas.charpentier079@gmail.com"},"license":"MIT","_id":"turborepo-summary@0.0.1","maintainers":[{"name":"charpeni","email":"nicolas.charpentier079@gmail.com"}],"homepage":"https://github.com/charpeni/turborepo-summary#readme","bugs":{"url":"https://github.com/charpeni/turborepo-summary/issues"},"bin":{"turborepo-summary":"dist/index.js"},"dist":{"shasum":"7c0da7644d30bf443127de3d7b1e476eb7d409bd","tarball":"https://registry.npmjs.org/turborepo-summary/-/turborepo-summary-0.0.1.tgz","fileCount":4,"integrity":"sha512-h2hb7bbmbVMuMt21jtTlxYV47rA+vxh+4NNDuj7abjXo+/Ush8KRI9TyYvWNWEaDwap+VLcVMM5/UNKbbvvF3w==","signatures":[{"sig":"MEUCIQDEFR1HA5PbbjbKiJiXLa9NjhuJW/b5/rtH49qnSmP8aAIgV0LqZ9EI0NunZQ/4W7BSpaR5qNFAJlASC4KCZD5e+x4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10109},"type":"module","gitHead":"f8d74081ddac536ba77fe77f9beeb66ae0dc49e8","scripts":{"lint":"eslint .","test":"jest","build":"tsdown","format":"prettier --write .","prepack":"pnpm build","prepare":"husky","type-check":"tsc --pretty --noEmit"},"_npmUser":{"name":"charpeni","email":"nicolas.charpentier079@gmail.com"},"repository":{"url":"git+https://github.com/charpeni/turborepo-summary.git","type":"git"},"_npmVersion":"10.9.3","description":"Generate a human-readable summary report from Turborepo run summary JSON output","directories":{},"lint-staged":{"*.{js,ts,md}":["prettier --write"]},"_nodeVersion":"22.20.0","dependencies":{"commander":"^14.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","eslint":"^9.38.0","tsdown":"^0.15.9","ts-jest":"^29.4.5","prettier":"3.6.2","@eslint/js":"^9.38.0","typescript":"^5.9.3","@types/jest":"^30.0.0","lint-staged":"^16.2.5","typescript-eslint":"^8.46.2","eslint-plugin-import":"^2.32.0","@total-typescript/tsconfig":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/turborepo-summary_0.0.1_1761500470585_0.20076216903291533","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"turborepo-summary","version":"1.0.0","keywords":["turborepo","turbo","summary","report","markdown","json"],"author":{"name":"Nicolas Charpentier","email":"nicolas.charpentier079@gmail.com"},"license":"MIT","_id":"turborepo-summary@1.0.0","maintainers":[{"name":"charpeni","email":"nicolas.charpentier079@gmail.com"}],"homepage":"https://github.com/charpeni/turborepo-summary#readme","bugs":{"url":"https://github.com/charpeni/turborepo-summary/issues"},"bin":{"turborepo-summary":"dist/index.js"},"dist":{"shasum":"c3200776213397f946f4809f6705419f2e77ef4e","tarball":"https://registry.npmjs.org/turborepo-summary/-/turborepo-summary-1.0.0.tgz","fileCount":4,"integrity":"sha512-5EoVeR+uRE+htBqQpzsQAmXxkkDqvqYGUGoLVNWnFsEo+AyKRkR1i5hAvsu4qRdACio+DTj/+dYg5PsPz4okuw==","signatures":[{"sig":"MEQCICYA9VdQHFoXrA2LPOFZLwbupjrrLwzvuP9iUormXKfWAiB2MHsmknqOPtTqTcSVxqoSv3zhaWpq5nc5X+VLOlLD6g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/turborepo-summary@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10343},"type":"module","gitHead":"38bc5a07e42298e03e3328837bc9fd7b6e6105d6","scripts":{"lint":"eslint .","test":"jest","build":"tsdown","format":"prettier --write .","prepack":"pnpm build","prepare":"husky","type-check":"tsc --pretty --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1aae4c43-3a8f-47a4-a187-5f9883cd8542"}},"repository":{"url":"git+https://github.com/charpeni/turborepo-summary.git","type":"git"},"_npmVersion":"11.6.2","description":"Generate a human-readable summary report from Turborepo run summary JSON output","directories":{},"lint-staged":{"*.{js,ts,md}":["prettier --write"]},"_nodeVersion":"22.20.0","dependencies":{"commander":"^14.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","eslint":"^9.38.0","tsdown":"^0.15.9","ts-jest":"^29.4.5","prettier":"3.6.2","@eslint/js":"^9.38.0","typescript":"^5.9.3","@types/jest":"^30.0.0","lint-staged":"^16.2.5","typescript-eslint":"^8.46.2","eslint-plugin-import":"^2.32.0","@total-typescript/tsconfig":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/turborepo-summary_1.0.0_1761504077063_0.337234246238715","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"turborepo-summary","version":"1.0.1","keywords":["turborepo","turbo","summary","report","markdown","json"],"author":{"name":"Nicolas Charpentier","email":"nicolas.charpentier079@gmail.com"},"license":"MIT","_id":"turborepo-summary@1.0.1","maintainers":[{"name":"charpeni","email":"nicolas.charpentier079@gmail.com"}],"homepage":"https://github.com/charpeni/turborepo-summary#readme","bugs":{"url":"https://github.com/charpeni/turborepo-summary/issues"},"bin":{"turborepo-summary":"dist/index.js"},"dist":{"shasum":"c9297490031b53b618fbcf7841679f149e90a755","tarball":"https://registry.npmjs.org/turborepo-summary/-/turborepo-summary-1.0.1.tgz","fileCount":4,"integrity":"sha512-qLdwLV8cHDu50BRq++Qd5K8O/o/c+LSZ72mLTI0rrMT9q2FULqCs1/hdM2P+FxYdcCnsMBNsBKheKYRhhRtMFA==","signatures":[{"sig":"MEYCIQDal7WWZeYsv5jrZkAQGNKX/a1VlaJgXkwk7Uk/vYmQ5QIhAJ0fK4O8ahCJh3RAIs6CXm4UKUHeAOierZgtWVeqgyW8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/turborepo-summary@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10398},"type":"module","gitHead":"28fd358a3db870f84239c0f59e49f6aa72e113ea","scripts":{"lint":"eslint .","test":"jest","build":"tsdown","format":"prettier --write .","prepack":"pnpm build","prepare":"husky","type-check":"tsc --pretty --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1aae4c43-3a8f-47a4-a187-5f9883cd8542"}},"repository":{"url":"git+https://github.com/charpeni/turborepo-summary.git","type":"git"},"_npmVersion":"11.9.0","description":"Generate a human-readable summary report from Turborepo run summary JSON output","directories":{},"lint-staged":{"*.{js,ts,md}":["prettier --write"]},"_nodeVersion":"22.22.0","dependencies":{"commander":"^14.0.1"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"jest":"^30.2.0","husky":"^9.1.7","eslint":"^9.38.0","tsdown":"^0.15.9","ts-jest":"^29.4.5","prettier":"3.6.2","@eslint/js":"^9.38.0","typescript":"^5.9.3","@types/jest":"^30.0.0","lint-staged":"^16.2.5","typescript-eslint":"^8.46.2","eslint-plugin-import":"^2.32.0","@total-typescript/tsconfig":"^1.0.4"},"_npmOperationalInternal":{"tmp":"tmp/turborepo-summary_1.0.1_1770388638042_0.6081835134663869","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"turborepo-summary","version":"1.1.0","description":"Generate a human-readable summary report from Turborepo run summary JSON output","keywords":["turborepo","turbo","summary","report","markdown","json"],"repository":{"type":"git","url":"git+https://github.com/charpeni/turborepo-summary.git"},"license":"MIT","author":{"name":"Nicolas Charpentier","email":"nicolas.charpentier079@gmail.com"},"type":"module","bin":{"turborepo-summary":"dist/cli.js"},"engines":{"node":">=22"},"scripts":{"build":"tsdown","format":"prettier --write .","lint":"eslint .","prepack":"pnpm build","prepare":"husky","test":"jest","type-check":"tsc --pretty --noEmit"},"lint-staged":{"*.{js,ts,md}":["prettier --write"]},"dependencies":{"commander":"^14.0.1"},"devDependencies":{"@eslint/js":"^9.38.0","@total-typescript/tsconfig":"^1.0.4","@types/jest":"^30.0.0","eslint":"^9.38.0","eslint-plugin-import":"^2.32.0","husky":"^9.1.7","jest":"^30.2.0","lint-staged":"^16.2.5","prettier":"3.6.2","ts-jest":"^29.4.5","tsdown":"^0.15.9","typescript":"^5.9.3","typescript-eslint":"^8.46.2"},"packageManager":"pnpm@10.19.0","gitHead":"94a6a79fd4dca322d878ebc2e244e9cdf4d11a17","_id":"turborepo-summary@1.1.0","bugs":{"url":"https://github.com/charpeni/turborepo-summary/issues"},"homepage":"https://github.com/charpeni/turborepo-summary#readme","_nodeVersion":"22.23.1","_npmVersion":"12.0.1","dist":{"integrity":"sha512-uHdGPR0AotIutSQO6t5Q0+dmREXd1L0u35D5+N02NH67GdBQXazBroT9LU+g7AQnVmflf/hgdU7JjHQ/xavwdA==","shasum":"2a2b3cff940aa8b63d3dde6081a9afb65a708878","tarball":"https://registry.npmjs.org/turborepo-summary/-/turborepo-summary-1.1.0.tgz","fileCount":5,"unpackedSize":19889,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/turborepo-summary@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIF3tWXkS4mYYL5RS2OSWvlgJ50ruirM/2nqX6NnflTEvAiEA6D/4Q/RByNHDgm4+lagCOvhNcuqaW5RoDfMO+pEX684="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1aae4c43-3a8f-47a4-a187-5f9883cd8542"}},"directories":{},"maintainers":[{"name":"charpeni","email":"nicolas.charpentier079@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/turborepo-summary_1.1.0_1784073406622_0.7742073865050398"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-26T17:41:10.380Z","modified":"2026-07-14T23:56:47.109Z","0.0.1":"2025-10-26T17:41:10.784Z","1.0.0":"2025-10-26T18:41:17.251Z","1.0.1":"2026-02-06T14:37:18.170Z","1.1.0":"2026-07-14T23:56:46.787Z"},"bugs":{"url":"https://github.com/charpeni/turborepo-summary/issues"},"author":{"name":"Nicolas Charpentier","email":"nicolas.charpentier079@gmail.com"},"license":"MIT","homepage":"https://github.com/charpeni/turborepo-summary#readme","keywords":["turborepo","turbo","summary","report","markdown","json"],"repository":{"type":"git","url":"git+https://github.com/charpeni/turborepo-summary.git"},"description":"Generate a human-readable summary report from Turborepo run summary JSON output","maintainers":[{"name":"charpeni","email":"nicolas.charpentier079@gmail.com"}],"readme":"# Turborepo Summary\n\n<img height=\"75\" src=\"https://github.com/user-attachments/assets/2cf6fb07-8ce6-4cf5-bb67-d1c54a01ef29\" alt=\"library's logo\" align=\"right\">\n\n[![Version](https://badge.fury.io/js/turborepo-summary.svg)](https://www.npmjs.org/package/turborepo-summary)\n[![Monthly Downloads](https://img.shields.io/npm/dm/turborepo-summary)](https://www.npmjs.org/package/turborepo-summary)\n[![GitHub License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/charpeni/turborepo-summary/blob/main/LICENSE)\n\nGenerate human-readable markdown reports from [Turborepo](https://turborepo.com/) run summary JSON output.\n\n<br />\n\n<p align=\"center\">\n  <img height=\"800\" alt=\"Example\" src=\"https://github.com/user-attachments/assets/f870a9c5-5eb3-4902-a1a1-729831852f10\" />\n</p>\n\n<hr />\n\nTurborepo offers a flag ([`--summarize`](https://turborepo.com/docs/reference/run#--summarize)) that generates a JSON file in `.turbo/runs` containing metadata about the run, including:\n\n- Affected packages\n- Executed tasks (including their timings and hashes)\n- All the files included in the cached artifacts\n\nBut it produces a JSON artifact that is not very human-readable, that's where this tool comes in.\n\nThis tool is particularly useful for:\n\n- **CI/CD Reporting** — Generate markdown reports in GitHub Actions or other CI environments to visualize Turborepo performance\n- **Performance Analysis** — Identify slow tasks and evaluate cache effectiveness\n- **Team Communication** — Share human-readable build summaries with your team\n- **Documentation** — Archive build statistics and track performance over time\n\n## Installation\n\n```bash\nnpx turborepo-summary\n```\n\n> [!NOTE]\n> Requires Node >= 22.\n\n## Usage\n\n> [!TIP]\n> If you are looking to generate a markdown report from Turborepo running on GitHub Actions, check this GitHub Action that does it for you: [turborepo-summary-action](https://github.com/charpeni/turborepo-summary-action)\n\nFirst, generate a Turborepo run summary JSON file by running any turbo command with the `--summarize` flag:\n\n```bash\nturbo run build --summarize\n```\n\nThis creates a JSON file (typically in `.turbo/runs/`) containing execution data for your tasks.\n\nThen, generate a markdown report from that JSON file:\n\n```bash\n# Explicit path\nnpx turborepo-summary .turbo/runs/[hash].json\n\n# Or omit the file — the newest .turbo/runs/*.json is picked automatically\nnpx turborepo-summary\n```\n\nYou can also read the summary from stdin, or write the report to a file:\n\n```bash\n# Read from stdin (useful for piping)\ncat .turbo/runs/[hash].json | npx turborepo-summary -\n\n# Write to a file instead of stdout\nnpx turborepo-summary --output REPORT.md\n```\n\n> [!TIP]\n> Running this CLI generates a markdown report, then you can view it at your convenience:\n>\n> Pipe it to either your IDE (e.g., VS Code) to view it:\n>\n> ```bash\n> npx turborepo-summary | code -\n> ```\n>\n> Use a markdown terminal viewer tool, like [`glow`](https://github.com/charmbracelet/glow):\n>\n> ```bash\n> npx turborepo-summary | glow -\n> ```\n\n### CLI Options\n\n```\nUsage: turborepo-summary [options] [file]\n\nArguments:\n  file                 Path to the Turbo run summary JSON file, \"-\" for stdin,\n                       or omit to use the newest .turbo/runs/*.json\n\nOptions:\n  -V, --version        output the version number\n  -o, --output <path>  Write the markdown report to a file instead of stdout\n  -h, --help           display help for command\n```\n\n## Output\n\nThe tool generates a comprehensive markdown report with three main sections:\n\n### Summary Metrics\n\nShows key statistics including:\n\n- Total execution duration\n- Number of tasks executed\n- Success/failure counts\n- Cache hit/miss statistics\n\n### Execution Timeline\n\nProvides a Mermaid Gantt chart visualizing task execution over time, showing:\n\n- When each task started and ended\n- Task duration\n- Cache status\n- Success/failure indicators\n\n### Detailed Results\n\nA table with per-task information including task ID, duration, cache status, and execution status.\n\n## License\n\nturborepo-summary is [MIT licensed](LICENSE).\n","readmeFilename":"README.md"}