{"id":13469536,"url":"https://github.com/typeofweb-org/ignore-monorepo-buildstep","last_synced_at":"2025-07-14T05:35:10.118Z","repository":{"id":60463475,"uuid":"543319075","full_name":"typeofweb-org/ignore-monorepo-buildstep","owner":"typeofweb-org","description":"Ignore Vercel buildstep in a pnpm monorepo","archived":false,"fork":false,"pushed_at":"2022-10-25T11:47:30.000Z","size":212,"stargazers_count":38,"open_issues_count":4,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-18T06:20:41.269Z","etag":null,"topics":["hacktoberfest","monorepo","pnpm","pnpm-workspaces","turborepo","vercel","workspaces"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/@typeofweb/ignore-monorepo-buildstep","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/typeofweb-org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["typeofweb"],"patreon":null,"open_collective":"typeofweb","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2022-09-29T21:05:24.000Z","updated_at":"2025-03-05T10:52:29.000Z","dependencies_parsed_at":"2022-09-30T00:10:25.314Z","dependency_job_id":null,"html_url":"https://github.com/typeofweb-org/ignore-monorepo-buildstep","commit_stats":null,"previous_names":["typeofweb-org/ignore-monorepo-buildstep","typeofweb/ignore-monorepo-buildstep"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/typeofweb-org/ignore-monorepo-buildstep","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeofweb-org%2Fignore-monorepo-buildstep","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeofweb-org%2Fignore-monorepo-buildstep/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeofweb-org%2Fignore-monorepo-buildstep/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeofweb-org%2Fignore-monorepo-buildstep/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/typeofweb-org","download_url":"https://codeload.github.com/typeofweb-org/ignore-monorepo-buildstep/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeofweb-org%2Fignore-monorepo-buildstep/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265246013,"owners_count":23734109,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["hacktoberfest","monorepo","pnpm","pnpm-workspaces","turborepo","vercel","workspaces"],"created_at":"2024-07-31T15:01:43.937Z","updated_at":"2025-07-14T05:35:10.087Z","avatar_url":"https://github.com/typeofweb-org.png","language":"TypeScript","funding_links":["https://github.com/sponsors/typeofweb","https://opencollective.com/typeofweb"],"categories":["TypeScript"],"sub_categories":[],"readme":"# @typeofweb/ignore-monorepo-buildstep\n\nA package that adds monorepo support for Vercel's \"Ignore build-step\" setting. Small, fast, with 0 external dependencies.\n\n## Why?\n\nBy default, when working in a monorepo, each push triggers Vercel to rebuild all the projects even when changes were introduced only to some of them. It takes time and blocks the build pipeline for your team. Thanks to `@typeofweb/ignore-monorepo-buildstep`, this is no longer a problem – Vercel becomes smarter and only rebuilds what needs building!\n\nIn a real-life project such as [saleor/react-storefront](https://github.com/saleor/react-storefront), we've **saved up to 85% on Vercel build times – 6.6x speedup**! `@typeofweb/ignore-monorepo-buildstep` helps you save time and money.\n\n## Example setup\n\n### Repo structure\n\nAssume we're using [pnpm workspaces](https://pnpm.io/workspaces) and we have the following monorepo structure:\n\n```\n.\n├── apps\n│   ├── a\n│   └── b\n└── packages\n    ├── common\n    └── depA\n```\n\nApps `a` and `b` both depend on the `common` package. Moreover, app `a` depends on `depA` package.\n\n### Vercel config\n\nAdd the following command to the \"Ignore Build Step\" section in your Vercel project settings:\n\n```\nnpx @typeofweb/ignore-monorepo-buildstep\n```\n\n![Ignore Build Step settings in Vercel](./docs/vercel_settings.png)\n\nBy default, `ignore-monorepo-buildstep` will compare `HEAD^` and `HEAD`. You can override this and use an env variable exposed by Vercel:\n\n```\nnpx @typeofweb/ignore-monorepo-buildstep $VERCEL_GIT_PREVIOUS_SHA\n```\n\n### Result\n\nWhen any changes are introduced to `packages/common`, both apps `a` and `b` will be built:\n![](./docs/github-both.png)\n\nHowever, when `packages/depA` is modified, only `apps/a` is built while `apps/b` is skipped:\n![](./docs/github-one.png)\n\nMoreover, deployment statuses are reported as successful even when builds are skipped:\n![](./docs/github-status.png)\n\n## How does it work?\n\n`@typeofweb/ignore-monorepo-buildstep` analyses the structure of the monorepo. It reads `pnpm-workspace.yaml` and `package.json` of every package, and creates a tree of dependencies inside the monorepo.\n\nThen, it proceeds to check whether the given package or any of its dependencies were modified since the last commit with the use of `git diff \"HEAD^\" \"HEAD\" --quiet`.\n\nCurrently, only `pnpm` workspaces are supported but more is on the roadmap.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftypeofweb-org%2Fignore-monorepo-buildstep","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftypeofweb-org%2Fignore-monorepo-buildstep","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftypeofweb-org%2Fignore-monorepo-buildstep/lists"}