{"id":15420267,"url":"https://github.com/jakebailey/pprof-it","last_synced_at":"2026-04-02T20:54:15.989Z","repository":{"id":110847629,"uuid":"448127601","full_name":"jakebailey/pprof-it","owner":"jakebailey","description":"A handy pprof wrapper for Node.js","archived":false,"fork":false,"pushed_at":"2026-03-13T11:41:24.000Z","size":1510,"stargazers_count":97,"open_issues_count":13,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-29T08:05:14.264Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jakebailey.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-01-14T22:48:01.000Z","updated_at":"2026-02-23T08:41:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"c5a198d9-075f-4932-a9fc-59363b10cfcf","html_url":"https://github.com/jakebailey/pprof-it","commit_stats":{"total_commits":107,"total_committers":3,"mean_commits":"35.666666666666664","dds":0.08411214953271029,"last_synced_commit":"8d0f93f88eda4d903284d87033dc56137f8210a0"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/jakebailey/pprof-it","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakebailey%2Fpprof-it","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakebailey%2Fpprof-it/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakebailey%2Fpprof-it/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakebailey%2Fpprof-it/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jakebailey","download_url":"https://codeload.github.com/jakebailey/pprof-it/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakebailey%2Fpprof-it/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31316008,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-01T17:28:49.325Z","updated_at":"2026-04-02T20:54:15.972Z","avatar_url":"https://github.com/jakebailey.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pprof-it\n\n`pprof-it` is a convenient wrapper to `pprof` that makes it easy to capture CPU\nand memory profiles of node programs.\n\n(Technically, `pprof-it` uses\n[DataDog's fork](https://github.com/datadog/pprof-nodejs) of `pprof-node`, as it\nsupports newer versions of node and includes prebuilds for many more platforms.)\n\n## Usage\n\nTo use `pprof-it`, use `pprof-it` in place of `node`:\n\n```sh\n$ npx pprof-it path/to/script.js\n```\n\nOr, ensure `node` is run with `--require=pprof-it`:\n\n```sh\n# Directly running with node\n$ node --require pprof-it path/to/script.js\n\n# Executables via npm/npx (v7+)\n$ npx --node-option=\"--require pprof-it\" \u003cexecutable name\u003e\n$ npm exec --node-option=\"--require pprof-it\" \u003cexecutable name\u003e\n\n# Executables via npm/npx (v6)\n$ npx --node-arg=\"--require pprof-it\" \u003cexecutable name\u003e\n\n# Executables via yarn (usually)\n$ node --require pprof-it $(yarn bin \u003cexecutable name\u003e)\n```\n\nThe `NODE_OPTIONS` environment variable may be used to pass `--require`, but is\nnot recommended as more than one process may emit profiles.\n\nBy default, `pprof-it` will produce both heap and time profiles and write them\nto the current directory.\n\nTo view the profiles, you can use [SpeedScope](https://www.speedscope.app/) for\na quick and easy view, or use the\n[`pprof` utility](https://github.com/google/pprof) for more info, like:\n\n```sh\n# CLI interface\n$ go run github.com/google/pprof@latest pprof-time-10503.pb.gz\n# Browser interface\n$ go run github.com/google/pprof@latest -http=: pprof-time-10503.pb.gz\n```\n\n## Options\n\n`pprof-it`'s behavior can be configured via the following environment variables.\n\n- `PPROF_PROFILERS`: Which profilers to run, separated by commas. The currently\n  available profilers are `heap` and `time`. Defaults to `heap,time`.\n\n- `PPROF_OUT`: Where to write the profiles. Defaults to the current working\n  directory.\n\n- `PPROF_SANITIZE`: Enables sanitization of paths in output profiles. May be\n  `off` or `on`. Defaults to `off`.\n\n- `PPROF_LINE_NUMBERS`: Attempts to collect line numbers. This option is\n  documented as experimental upstream (but seems to work), and only works for\n  time profiles. May be `off` or `on`. Defaults to `on`.\n\n- `PPROF_HEAP_OUT`: Output path for the heap profile, if enabled. If this path\n  is relative, it will be relative to `PPROF_OUT`. If a directory, the profile\n  will be placed in that directory with the default name. Defaults to\n  `pprof-heap-${process.id}.pb.gz`.\n\n- `PPROF_HEAP_INTERVAL`: Average number of bytes between heap samples. Defaults\n  to `512*1024`.\n\n- `PPROF_HEAP_STACK_DEPTH`: Maximum stack depth for heap samples. Defaults to\n  `64`.\n\n- `PPROF_TIME_OUT`: Output path for the time profile, if enabled. If this path\n  is relative, it will be relative to `PPROF_OUT`. If a directory, the profile\n  will be placed in that directory with the default name. Defaults to\n  `pprof-time-${process.id}.pb.gz`.\n\n- `PPROF_TIME_INTERVAL`: Average number of microsoeconds between time samples.\n  Defaults to `1000`.\n\n- `PPROF_SIGNAL_EXIT`: Enables handling of exit signals (e.g., SIGINT). May be\n  `off` or `on`. Since signals are handled asynchronously, `pprof-it`'s\n  registration of signal handlers may prevent exiting (as node will no longer\n  attempt to interrupt normal code execution, e.g. quitting on Ctrl+C). Defaults\n  to `on`.\n\n- `PPROF_LOGGING`: Controls `pprof-it`'s logging. May be `off` or `on`. Defaults\n  to `on`.\n\nOn Windows, where setting environment variables temporarily is less convenient,\nit's simplest to just use `cross-env` to handle this:\n\n```ps1\n$ npx cross-env PPROF_OUT=C:\\foo\\bar node --require pprof-it path\\to\\script.js\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakebailey%2Fpprof-it","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakebailey%2Fpprof-it","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakebailey%2Fpprof-it/lists"}