Skip to content
This repository was archived by the owner on Jan 14, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/lib/components/site/docs/nav-menu.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
<Nav.Link href="/docs" title="Docs" onclick={closeMenu} />
<Nav.Link href="/registries" title="Registries" onclick={closeMenu} />
<Nav.Link href="/demos" title="Demos" onclick={closeMenu} />
<Nav.Link href="https://www.jsrepo.com" title="jsrepo.com" onclick={closeMenu} />
</Nav.List>
</Nav.Group>
{#if page.url.pathname.startsWith('/docs')}
Expand Down
4 changes: 4 additions & 0 deletions src/lib/components/site/footer.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@
title: 'Demos',
href: '/demos'
},
{
title: 'jsrepo.com',
href: 'https://jsrepo.com'
},
{
title: 'GitHub',
href: 'https://github.com/jsrepojs/jsrepo'
Expand Down
9 changes: 8 additions & 1 deletion src/lib/components/site/header.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import NavMenu from './docs/nav-menu.svelte';
import StarButton from './star-button.svelte';
import { Button } from '$lib/components/ui/button';
import { Menu, X } from '@lucide/svelte';
import { ArrowUpRight, Menu, X } from '@lucide/svelte';
import { Dialog } from 'bits-ui';
import { active } from '$lib/actions/active.svelte';
import { commandContext } from '$lib/context';
Expand Down Expand Up @@ -56,6 +56,13 @@
>
Demos
</a>
<a
href="https://jsrepo.com"
class="text-sm text-muted-foreground transition-all hover:text-foreground data-[active=true]:text-foreground"
>
jsrepo.com
<ArrowUpRight class="inline size-4" />
</a>
</div>
</div>

Expand Down
2 changes: 1 addition & 1 deletion src/lib/components/ui/pm-command/pm-command.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
};

let {
variant,
variant = 'default',
class: className,
command,
agents = ['npm', 'pnpm', 'yarn', 'bun'],
Expand Down
2 changes: 1 addition & 1 deletion src/lib/docs/map.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ const tempMap: Record<string, [TempDoc, TempDoc[]] | [string, TempDoc[]]> = {
slug: 'providers',
children: [
{
title: 'jsrepo',
title: 'jsrepo.com',
slug: 'jsrepo',
tag: 'New'
},
Expand Down
66 changes: 37 additions & 29 deletions src/lib/docs/registry/providers/jsrepo.md
Original file line number Diff line number Diff line change
@@ -1,38 +1,16 @@
---
title: jsrepo.com
description: How to publish and serve your registry on jsrepo.com.
lastUpdated: 4-28-2025
description: How to publish your registry to jsrepo.com.
lastUpdated: 5-7-2025
---

[jsrepo.com](https://jsrepo.com) is the best way to host your registry. It has first class support for semantic versioning and private registries so that you can worry less about hosting and more about shipping.
[jsrepo.com](https://jsrepo.com) is the best way to host your registry. Here's a few of the key advantages over other providers:

## semver
- 🔒 First class support for private registries with the `jsrepo auth` command
- 🔄 [semver](https://semver.org/) support
- 💨 Improved performance

One of the greatest benefits of hosting your registry on **jsrepo.com** is first class support for [semver](https://semver.org/) (Semantic Versioning).

While using a git provider with tags is a fine solution for basic versioning needs it's far less secure because tags are mutable.

With **jsrepo.com** versions are immutable, meaning they will forever point to the same version of the code that you originally specified.

Versions can be specified for a **jsrepo.com** registry with the same syntax you might see on npm or jsr:

```sh
jsrepo init @ieedan/std@0.0.1
```

**jsrepo** (like npm or jsr) will tag your releases. For instance the latest (non pre-release) version of a registry will be tagged with the `latest` tag. And the latest version of a pre-release will be tagged using it's pre-release label, for instance `1.0.0-next.1` would be tagged with `next`.

You specify a tagged version with the same syntax:

```sh
jsrepo init @ieedan/std@latest
```

## Private registries

**jsrepo.com** also has first class support for private registries. It's easier than ever to share code with your entire team using **jsrepo.com**.

Once you have invited your team to an organization on **jsrepo.com** they will be able to access any public or private registries in the scopes owned by that organization with their own PAT.
> jsrepo.com is forever free for public registries

## Publishing to jsrepo.com

Expand Down Expand Up @@ -216,3 +194,33 @@ jobs:
```

Now you can use changesets with `jsrepo` just like with an npm package!

## Advantages

### semver

One of the greatest benefits of hosting your registry on **jsrepo.com** is first class support for [semver](https://semver.org/) (Semantic Versioning).

While using a git provider with tags is a fine solution for basic versioning needs it's far less secure because tags are mutable.

With **jsrepo.com** versions are immutable, meaning they will forever point to the same version of the code that you originally specified.

Versions can be specified for a **jsrepo.com** registry with the same syntax you might see on npm or jsr:

```sh
jsrepo init @ieedan/std@0.0.1
```

**jsrepo** (like npm or jsr) will tag your releases. For instance the latest (non pre-release) version of a registry will be tagged with the `latest` tag. And the latest version of a pre-release will be tagged using it's pre-release label, for instance `1.0.0-next.1` would be tagged with `next`.

You specify a tagged version with the same syntax:

```sh
jsrepo init @ieedan/std@latest
```

### Private registries

**jsrepo.com** also has first class support for private registries. It's easier than ever to share code with your entire team using **jsrepo.com**.

Once you have invited your team to an organization on **jsrepo.com** they will be able to access any public or private registries in the scopes owned by that organization with their own PAT.
28 changes: 23 additions & 5 deletions src/routes/+page.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import * as Icons from '$lib/components/icons';
import * as Terminal from '$lib/components/ui/terminal';
import { Window } from '$lib/components/ui/window';
import { ArrowRight } from '@lucide/svelte';
</script>

<svelte:head>
Expand All @@ -17,11 +18,28 @@
<main class="container flex w-full flex-col pb-10 pt-[--header-height]">
<div class="grid gap-8 py-12 md:py-20 lg:grid-cols-2 lg:place-items-center lg:py-32">
<div class="flex max-w-2xl flex-col place-items-start text-left">
<h1 class="text-4xl font-semibold sm:text-6xl">Maintainable source registries</h1>
<p class="text-lg text-muted-foreground">
jsrepo provides a rich set of features to make distributing and consuming code from source
registries maintainable.
</p>
<div class="flex flex-col gap-2">
<a
href="https://www.jsrepo.com"
class="group flex w-fit place-items-center rounded-3xl border py-1 pl-2 pr-1 text-sm transition-all hover:bg-card"
>
<span class="mr-2">🚀</span>
<span class="mr-2 text-muted-foreground">|</span>
<span class="transition-all group-hover:mr-2"> Introducing jsrepo.com </span>
<span
class="w-0 scale-0 rounded-full bg-accent p-1 transition-all group-hover:w-6 group-hover:-rotate-45 group-hover:scale-100"
>
<ArrowRight class="size-4" />
</span>
</a>
<div>
<h1 class="text-4xl font-semibold sm:text-6xl">Maintainable source registries</h1>
<p class="text-lg text-muted-foreground">
jsrepo provides a rich set of features to make distributing and consuming code from
source registries maintainable.
</p>
</div>
</div>

<div class="flex place-items-center justify-center py-2 sm:py-5">
<div class="flex place-items-center gap-2">
Expand Down