jsr-io / jsr-npm

A cli tool to make installing packages form jsr.io in node easy
https://npmjs.com/package/jsr
MIT License
102 stars 13 forks source link

Allow 3-word install with npm, pnpm, yarn, bun (w. fallback to npm registry) #29

Open karlhorky opened 8 months ago

karlhorky commented 8 months ago

Problem

If I take @mxdvl/valibot as an example, the commands are varied in DX:

Deno: nice, 3 words, just like using npm registry packages with npm/Yarn/pnpm

deno add @mxdvl/valibot

All other package managers: verbose and hard to remember:

# 4 words
npx jsr add @mxdvl/valibot
bunx jsr add @mxdvl/valibot

# 5 words
pnpm dlx jsr add @mxdvl/valibot
yarn dlx jsr add @mxdvl/valibot

Proposal

Contribute / propose features to all common package managers npm, pnpm, yarn, bun to allow for simple 3-word commands with better DX:

# 3 words
npm add @mxdvl/valibot
pnpm add @mxdvl/valibot
bun add @mxdvl/valibot
yarn add @mxdvl/valibot

Fallback to npm feature: If the package is not found in jsr.io's registry, then the npm registry will be searched, using the rules that jsr currently uses

This may require some sort of:

  1. multiple registry support
  2. prioritization of registry order (eg. jsr first, then npm)
  3. option to exclude a registry (eg. jsr first, npm never)

...or maybe package managers already have both these features? If so, maybe that should be suggested as the first way to install the package instead of the npx, bunx, dlx commands above...? 🤔

Alternatives considered

Add a small global jsr binary that will add/update/remove the package with your current package manager, similar to Corepack

jsr add @mxdvl/valibot

Relevant discussion is happening recently about Corepack's "packageManager" field:

  1. Enable Corepack by default (issue) https://github.com/nodejs/node/issues/50963
  2. Enable Corepack yarn and pnpm by default (PR) https://github.com/nodejs/node/pull/51886
  3. "packageManager" doesn't support npm https://github.com/nodejs/node/issues/51888
  4. "packagemanager" field is too limited https://github.com/nodejs/corepack/issues/402
  5. Define spec for development environment field https://github.com/openjs-foundation/package-metadata-interoperability-collab-space/issues/15
marvinhagemeister commented 8 months ago

Agree, would be cool to see direct integration with JSR in other package managers. We provided this tiny cli here to start from somewhere and to show what the workflow can look like. Now that JSR is out to the public we're hoping that other package managers would be open to consider supporting JSR directly. Happy to see that some discussions are already happening on how to support multiple registries.

marvinhagemeister commented 8 months ago

Marking as question, because there is nothing to do on our end for now in JSR.