Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Support for GitLab, Bitbucket remote templates

Ouverte
#3,033 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
62/100
Type d'issue
Fonctionnalité
Clarté
Clairement spécifiée
Activité
Active
Stack technique
git, typescript
Domaine
cli

Piste de recherche

Start in packages/cli/src/create/discovery.ts, where isGitHubUrl, parseGitHubUrl and discoverTemplate decide whether input goes to degit, then check the remote.ts hint and the expandCreateShorthand skip. Read the GitHub cases in packages/cli/src/create/tests/discovery.spec.ts first. Done when gitlab:, gitlab.com and bitbucket forms route to degit with the host kept, existing GitHub tests still pass, and new spec cases cover them.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

pending triage
Description

As a developer using Vite+ with GitLab, I want vp create to scaffold from templates hosted on GitLab (gitlab.com or self-hosted), so my team can share project templates the same way GitHub users can.

Current behavior (vp v1.1.0)

GitHub works:

$ vp create github:nkzw-tech/fate-template --no-interactive
◇ Scaffolded fate-template
→ Next: cd fate-template && vp run

GitLab, the same public repo in both forms, fails:

$ vp create gitlab:gitlab-org/project-templates/express --no-interactive
◇  Generating project…
■  Template "gitlab:gitlab-org/project-templates/express" not found on npm. Run
   vp create --list to see available templates.

$ vp create https://gitlab.com/gitlab-org/project-templates/express --no-interactive
◇  Generating project…
■  Template "https://gitlab.com/gitlab-org/project-templates/express" not found
   on npm. Run vp create --list to see available templates.

The input isn't recognized as a remote template, so it falls through to the npm package lookup.

Why it matters
  • Many teams, especially companies, host code on GitLab (often self-hosted), not GitHub.
  • Vite+ already supports GitLab on the CI side (setup-vp GitLab template, GitLab CI/CD guide). Scaffolding is the missing piece of that flow.
  • vp create already uses degit for remote templates, and degit already supports these hosts. With degit 3.10.0 directly, both commands above work:
$ pnpm dlx [email protected] gitlab:gitlab-org/project-templates/express out-nested
> cloned gitlab-org/project-templates/express#HEAD to out-nested

$ pnpm dlx [email protected] https://gitlab.com/gitlab-org/gitlab-runner-docker-cleanup out-url
> cloned gitlab-org/gitlab-runner-docker-cleanup#HEAD to out-url

So only the template detection in Vite+ is GitHub-only.

Suggested solution
Where the limit is

packages/cli/src/create/discovery.ts (on main):

  • isGitHubUrl() (L12): only matches github:, https://github.com/ and github.com/.
  • parseGitHubUrl() (L21): reduces input to bare user/repo. Fine for GitHub (degit's default host), but it drops the host prefix degit needs for anything else. The URL regex github\.com\/([^/]+\/[^/]+) would also cut GitLab nested groups (group/subgroup/repo).
  • discoverTemplate() (L133): only routes to degit when isGitHubUrl() is true. Everything else falls through to the npm lookup, which gives the "not found on npm" error above.

Related spots:

  • packages/cli/src/create/bin.ts (L597): uses isGitHubUrl / inferGitHubRepoName to infer the target directory.
  • packages/cli/src/create/templates/remote.ts: isGitHubTemplate = command === 'degit' (L26), and the error hint says "Make sure the GitHub repository exists" (L72).
  • expandCreateShorthand() (L234): already skips inputs containing :, so gitlab: and https://gitlab.com/... are safe there. Bare forms like git.sr.ht/user/repo would still need an explicit skip.
What degit already supports (degit 3.10, docs/USAGE.md)
Host Forms
GitLab gitlab:user/repo, https://gitlab.com/user/repo, [email protected]:user/repo
Self-hosted GitLab gitlab://git.example.com/user/repo
Bitbucket bitbucket:user/repo, https://bitbucket.org/user/repo, [email protected]:user/repo
Sourcehut git.sr.ht/user/repo, https://git.sr.ht/user/repo, [email protected]:user/repo

It also handles GitLab nested groups, #ref (branch/tag/commit), and private repos over SSH.

Proposed change
  1. Make the GitHub-only helpers generic (e.g. isRemoteGitTemplate, toDegitSource, inferRemoteRepoName), or extend the existing ones.
  2. Detection: also match gitlab:, gitlab://, gitlab.com/, bitbucket:, bitbucket.org/, git.sr.ht/ and git@<host>: forms.
  3. Source passed to degit:
    • GitHub: keep the current behavior (bare user/repo), so nothing changes for existing users.
    • Other hosts: pass the input through as-is, keeping the host. degit already parses these forms, so Vite+ doesn't need its own parser, and nested groups and #ref keep working.
  4. Repo name inference (default target dir): last path segment, without .git or #ref.
  5. expandCreateShorthand(): explicitly skip bare host forms like git.sr.ht/user/repo.
  6. remote.ts error hint: "repository" instead of "GitHub repository", and mention SSH access for private / self-hosted repos.
Tests

packages/cli/src/create/__tests__/discovery.spec.ts:

  • GitHub template helpers (L275): add detection, degit source and repo-name cases for GitLab (shorthand, URL, .git), self-hosted GitLab, a nested group and Bitbucket.
  • should not expand GitHub URLs (L248): add the new forms.
  • discoverTemplate (degit test near L290): add a GitLab case checking command === 'degit' and that the host is kept in args[0].
  • Keep the existing GitHub cases unchanged as a regression guard.
Docs

docs/guide/create.md: update "Template Sources" and the "Use remote templates" examples:

vp create gitlab:user/repo
vp create https://gitlab.com/group/subgroup/repo
vp create gitlab://git.example.com/user/repo
vp create bitbucket:user/repo
Alternative

Workarounds today. Both skip what vp create adds on top (agent files, editor config, hooks, package manager setup):

pnpm dlx degit gitlab:user/repo my-app
cd my-app && vp install

or

git clone --depth 1 https://gitlab.com/user/repo.git my-app

then remove my-app/.git and run vp install.

A smaller first step could be GitLab only (gitlab:, gitlab.com/ and gitlab://), since that's likely where most non-GitHub demand is.

Additional context
  • Reproduced with vp v1.1.0 (current npm latest). The same GitHub-only detection is in discovery.ts on main and on release/v1.2.0
  • No existing issue or PR found (searched "gitlab", "degit", "remote template")
  • degit host support: https://github.com/Rich-Harris/degit/blob/master/docs/USAGE.md
  • Related GitLab work in Vite+: #1920, #2239, #2258, #2520
  • Side note: the current error ("not found on npm") is misleading for git URLs. Even without full support, detecting a non-GitHub git host and saying "only GitHub remote templates are supported" would help
Validations
  • Read the Contributing Guidelines.
  • Confirm this request is for Vite+ itself and not for Vite, Vitest, tsdown, Rolldown, or Oxc.
  • Check that there isn't already an issue requesting the same feature.
Langage dominant
Rust
Étoiles
6k
Forks
274
Merge moyen
1 j 12 h
PR mergées (30 j)
205

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de voidzero-dev/vite-plus

Toutes les issues de voidzero-dev/vite-plus

Issues similaires

Plus d'issues Rust

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.