2 min read

DENO | JSR

DENO | JSR

JSR: A New Hope for JavaScript Package Management

JavaScript has become the ubiquitous language of the web, and with its ever-growing popularity, the need for efficient and robust package management has become increasingly important. While npm has long been the de facto standard for managing JavaScript packages, there's always room for innovation.

JSR is a new player in the game, aiming to be a superset of npm rather than a replacement. Designed to work seamlessly with TypeScript and other modern JavaScript features, JSR offers compatibility with a wide range of package managers and runtimes.

Here's a closer look at what makes JSR unique:

  • TypeScript and Modern JavaScript Support: JSR is built from the ground up to support the latest and greatest features of JavaScript, including TypeScript. This makes it an ideal choice for developers who are working on cutting-edge projects.
  • Compatibility: JSR is designed to coexist peacefully with npm. You can use JSR alongside your existing npm packages without any conflicts. This makes it easy to migrate to JSR at your own pace.
  • Rich Ecosystem: JSR is backed by a growing community of developers and a rich ecosystem of packages. This ensures that you'll have access to the tools and libraries you need to build your next JavaScript project.

If you're looking for a package registry that can keep up with the ever-evolving JavaScript landscape, JSR is definitely worth considering. With its focus on modern features, compatibility, and a thriving ecosystem, JSR has the potential to become a major player in the JavaScript package management world.

How to publish JSR package?

Creating a new package with JSR involves creating some files and potentially setting up a GitHub repository.

  • Create a deno.json file: This file contains metadata about your package, such as its name, version, description, and dependencies.
{
  "name": "@nodeteam/hello",
  "version": "0.1.0",
  "exports": "./hello.ts"
}

Create your source code: This can be JavaScript or TypeScript code, depending on your preference.

/**
 * Hello a person.
 * @param name The name of the person to say hello.
 */
export function hello(name: string) {
  console.log(`Hello, ${name}!`);
}

(Optional) Create a README.md file: This file provides documentation for your package.

Publish your package: You can publish your package to JSR using the jsr publish command.

# deno
deno publish
# npm
npx jsr publish
# yarn
yarn dlx jsr publish
# pnpm
pnpm dlx jsr publish

For a more detailed guide, you can refer to the JSR documentation on publishing packages: Publishing packages - Docs - JSR - JSR: the JavaScript Registry