jsrepo.com

A registry for your registries.

Official

jsrepo.com is a centralized source registry for registries. Much like npm is for packages, jsrepo.com is for registries.

Like npm, you publish your registry to jsrepo.com with the jsrepo publish command and then other developers can add your code to their projects with the jsrepo add command.

The benefits of jsrepo.com

  • Semver support - You can publish multiple versions of the same registry (including pre-release versions) just like you would on npm.
  • Easy installation - You can add your registry to your project with the simple @<scope>/<registry> syntax.
  • Private registries - You can easily publish private registries and share them with your team for free.
  • Marketplace - You can monetize your registry by selling it on the marketplace.
  • Discoverability - Your registry will be discoverable through the jsrepo.com website and the jsrepo mcp server.

Publishing your registry

If you already have a registry that can be built with jsrepo then there are only a few steps to publishing it to jsrepo.com. If not then checkout the create a registry guide to get started.

Create an account

Go to jsrepo.com and create an account.

Claim a scope

Once you have an account navigate to /account/scopes/new to claim a scope.

Scopes are used to group your registries together and are required to publish your registry.

When users add your registry the scope will be the first part of the registry name: @<scope>/<registry>.

Authenticate with jsrepo.com

Run the following command to authenticate with jsrepo.com:

jsrepo auth jsrepo

You will be prompted to finish the sign in in your browser and then you will be authenticated.

Prepare your registry

Decide on a name for your registry and add it to your jsrepo.config.ts file:

jsrepo.config.ts
import { defineConfig } from "jsrepo";

export default defineConfig({
    registry: {
        name: "@my-scope/my-registry", 
        // ...
    },
});

Next you need to provide the version or your registry that will be published. If you want jsrepo to pull from the version in your package.json file just provide package as the version:

jsrepo.config.ts
import { defineConfig } from "jsrepo";

export default defineConfig({
    registry: {
        name: "@my-scope/my-registry",
        version: "1.0.0", 
        // or take the version from the `package.json` file
        version: "package", 
        // ...
    },
});

(Optional) Now is also a good time to add any other metadata you want to your registry:

jsrepo.config.ts
import { defineConfig } from "jsrepo";

export default defineConfig({
    registry: {
        name: "@my-scope/my-registry",
        description: "My first registry", 
        homepage: "https://my-registry.com", 
        repository: "https://github.com/my-scope/my-registry", 
        bugs: "https://github.com/my-scope/my-registry/issues", 
        authors: ["Aidan Bleser"], 
        tags: ["first-registry"], 
        // ...
    },
});

(Optional) By default your registry will be published as public so anyone can see and use it. You can change the access level to "private" or "marketplace" by setting the access property:

jsrepo.config.ts
import { defineConfig } from "jsrepo";

export default defineConfig({
    registry: {
        name: "@my-scope/my-registry",
        access: "private", 
    },
});

Publish your registry

Run the following command to publish your registry:

jsrepo publish

Start adding items to your project

Run the following command to add items to your project:

jsrepo add --registry @my-scope/my-registry
# or 
jsrepo init @my-scope/my-registry

Badges

Badge
jsrepo latest version
jsrepo downloads weekly
jsrepo downloads monthly
jsrepo downloads yearly
jsrepo registry rating