Description
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:
- multiple registry support
- prioritization of registry order (eg. jsr first, then npm)
- 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:
- Enable Corepack by default (issue) enable corepack by default nodejs/node#50963
- Enable Corepack yarn and pnpm by default (PR) build: enable
yarn
andpnpm
Corepack binaries by default nodejs/node#51886 "packageManager"
doesn't support npm"packageManager"
field doesn’t support npm nodejs/node#51888"packagemanager"
field is too limitedpackageManager
field is too limited nodejs/corepack#402- Define spec for development environment field Define spec for development environment field openjs-foundation/package-metadata-interoperability-collab-space#15