{"id":19002616,"url":"https://github.com/junhoyeo/vercel-submodules","last_synced_at":"2026-01-17T11:10:14.849Z","repository":{"id":59261635,"uuid":"536079607","full_name":"junhoyeo/vercel-submodules","owner":"junhoyeo","description":"🍣 CLI to handle Private Git Submodules in your @Vercel Project","archived":false,"fork":false,"pushed_at":"2025-10-21T11:22:28.000Z","size":2167,"stargazers_count":88,"open_issues_count":3,"forks_count":9,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-21T13:25:34.733Z","etag":null,"topics":["git-submodules","submodules","vercel"],"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/junhoyeo.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2022-09-13T10:48:33.000Z","updated_at":"2025-10-21T11:22:31.000Z","dependencies_parsed_at":"2025-04-02T18:22:46.077Z","dependency_job_id":"7417f04b-904f-4746-bf7c-c4b235aa832c","html_url":"https://github.com/junhoyeo/vercel-submodules","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/junhoyeo/vercel-submodules","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junhoyeo%2Fvercel-submodules","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junhoyeo%2Fvercel-submodules/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junhoyeo%2Fvercel-submodules/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junhoyeo%2Fvercel-submodules/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/junhoyeo","download_url":"https://codeload.github.com/junhoyeo/vercel-submodules/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junhoyeo%2Fvercel-submodules/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28506615,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T10:25:30.148Z","status":"ssl_error","status_checked_at":"2026-01-17T10:25:29.718Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["git-submodules","submodules","vercel"],"created_at":"2024-11-08T18:15:28.806Z","updated_at":"2026-01-17T11:10:14.823Z","avatar_url":"https://github.com/junhoyeo.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"[![Vercel Submodules](https://raw.githubusercontent.com/junhoyeo/vercel-submodules/main/docs/images/vercel-submodules.svg)](https://www.npmjs.com/package/vercel-submodules)\n\n\u003ch1\u003e\n  \u003ccode\u003evercel-submodules\u003c/code\u003e: \u003cbr /\u003e\n  The CLI to handle \u003cbr /\u003e\n  \u003cstrong\u003ePrivate Git Submodules\u003c/strong\u003e \u003cbr /\u003e\n  in your \u003cstrong\u003e\n    \u003ca href='https://vercel.com/home'\u003eVercel\u003c/a\u003e Project\n  \u003c/strong\u003e\n\u003c/h1\u003e\n\n\u003ca aria-label=\"npm version\" href=\"https://www.npmjs.com/package/vercel-submodules\"\u003e\n  \u003cimg alt=\"\" src=\"https://badgen.net/npm/v/vercel-submodules\"\u003e\n\u003c/a\u003e\n\u003ca aria-label=\"License\" href=\"https://github.com/junhoyeo/vercel-submodules/blob/main/LICENSE\"\u003e\n  \u003cimg alt=\"\" src=\"https://badgen.net/npm/license/vercel-submodules\"\u003e\n\u003c/a\u003e\n\n\u003e This project is community-driven and not affiliated with Vercel in any way. However, I'd love to contribute!\n\n## The Status Quo\n\n\u003e **@vercel** [Support for private Git Submodules #44](https://github.com/orgs/vercel/discussions/44)\n\nWith Git Submodules, you can add other repositories as a subdirectory of another repository. The [`experimental.externalDir` option in Next.js](https://github.com/vercel/next.js/pull/22867) makes it even more magical by directly transpiling external libraries.\n\nHowever, Vercel does not support private Git Submodules for now. There have been many community-made workarounds, like [calling Vercel CLI inside GitHub Actions](https://github.com/vercel/community/discussions/44#discussioncomment-22319) (not a fundamental solution) or [using shell scripts](https://github.com/beeinger/vercel-private-submodule) (it works, but it cannot fit general needs like cloning multiple repositories, auto-response for newly added submodules), having their own set of limitations.\n\n## 📦 Installation and Usage\n\nFirst, [set your GitHub Token](#set-github-token). Next, navigate to the [**Build \u0026 Development Settings** section](https://vercel.com/docs/concepts/deployments/configure-a-build#build-and-development-settings) and override **Install Command** with `npx vercel-submodules --all \u0026\u0026 (...)`. Such as `npx vercel-submodules --all \u0026\u0026 yarn install`.\n\nOnce configured, `vercel-submodules` take care of everything. It detects the indicated commit hashes with all or configured submodules; you don't have to update anything again!\n\n[![Usage information for `vercel-submodules`](https://raw.githubusercontent.com/junhoyeo/vercel-submodules/main/docs/images/usage-information.jpg?v=2)](https://www.npmjs.com/package/vercel-submodules)\n\nYou can also add the package to your `package.json` if needed:\n\n```\nyarn add -D vercel-submodules\n```\n\n## Clone all Submodules\n\n```\nnpx vercel-submodules --all\n```\n\nThis command clones all submodules inside the repository.\n\n## Clone only specific Submodules\n\n```\nnpx vercel-submodules --paths packages/module-a ./packages/module-b docs\n```\n\nThis command above will clone submodules with the following `path`:\n\n- `./packages/module-a`\n- `./packages/module-b`\n- `./docs`\n\n## Configure clone depth\n\n```\nnpx vercel-submodules --depth 10\n```\n\nThe default value is `1`.\n\n## Set GitHub Token\n\nYou'll need to configure your GitHub token in order to clone private repositories in Vercel. Follow these steps:\n\n1. Go to your [GitHub Developer settings \u003e Personal access tokens](https://github.com/settings/tokens/new).\n2. Click **\"Generate new token\"**.\n3. Give the token a name and select the **`repo` (Full control of private repositories) permission**.\n4. Click **\"Generate token\"**. You will then be presented with a token that you can use to authenticate with GitHub.\n5. Add the resulting token as an [Environment Variable in Vercel](https://vercel.com/docs/concepts/projects/environment-variables) called `GITHUB_TOKEN`.\n\nAlternatively, you can explicitly set the token argument:\n\n```bash\nnpx vercel-submodules --token 7777777141f111cf9f0308a63dbd9d0cad3010c4\n```\n\n\u003e FYI, that's my [Ethereum address](https://etherscan.io/enslookup-search?search=junhoyeo.eth) 💎\n\nIf the `GITHUB_TOKEN` environment variable is not set, the CLI will attempt to use the default value of `$GITHUB_TOKEN`.\n\nYou can also use the [new fine-graned PAT](https://github.blog/2022-10-18-introducing-fine-grained-personal-access-tokens-for-github/) using the `--fg-token` flag, too.\n\n```bash\nnpx vercel-submodules --fg-token 7777777141f111cf9f0308a63dbd9d0cad3010c4\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunhoyeo%2Fvercel-submodules","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjunhoyeo%2Fvercel-submodules","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunhoyeo%2Fvercel-submodules/lists"}