Today, I will be introducing JSR once again. I'm Leo, I work at Deano, I work on JSR, documentation generation and web APIs.
What is JSR? It's a new JavaScript registry, similar to npm, but it supports TypeScript out of the box. No setting up TSC, you upload TypeScript and it generates the files for you. It does not replace npm, however. It's built on top of it. You can still use npm packages alongside it. It's compatible across different run times, be it Node, Deano, Cloudflare workers, as long as they support Node modules, it works. Same goes for package managers, npm, pm, pm, yarn, and more. As long as you support Node modules, it will just work.
So why did we create JSR? It's due to the complexity of npm. As said, TypeScript is getting complicated, but everyone uses TypeScript nowadays, so why does not npm embrace it? The solution was, let's create an alternative built on top of it. Npm is not innovating at all. No TypeScript support, made very little changes, and seems more going for an enterprise route, but nothing for the open-source ecosystem. Our values are that JavaScript is one that progresses rapidly, and, again, npm doesn't really. The reason we created this is because npm is not advancing.
Some additional features of npm is that we have GitHub Action integration directly, so via YDC tokens, you can run npm JSR publish and it will just publish. You don't need to put any tokens, it just authenticates that it is actually you. We have provenance attestations which, if using GitHub Actions, it will generate provenance for you which further proves that you published the package and that you are the real author and not that there is some man in the middle of some sort of stolen tokens, et cetera. Documentation generation is that JSR generates documentation for all your APIs directly for you. You don't need to set up TS docs or some other documentation generation tool. It does it straight for you.
So, demo time. This is going to be interesting. Let's take a look at JSR itself. It's a simple website. We can look for a package, make it bigger, and it's a popular middleware package similar to express from the npm ecosystem. It has a readme, I can click over to the docs, it has some exported types, classes, interfaces, et cetera, and some more documentation, the type parameters, properties, methods, all different information that one would need from a package is included. We also have a neat little score because people love to gamify things. Let's publish a package, shall we? So we're here, an empty directory, nothing fancy to see, and we will just create, actually, let's go to the browser, let me sign in quickly.
Comments