Skip to content

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

@karlhorky

Description

@karlhorky

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) enable corepack by default nodejs/node#50963
  2. Enable Corepack yarn and pnpm by default (PR) build: enable yarn and pnpm Corepack binaries by default nodejs/node#51886
  3. "packageManager" doesn't support npm "packageManager" field doesn’t support npm nodejs/node#51888
  4. "packagemanager" field is too limited packageManager field is too limited nodejs/corepack#402
  5. Define spec for development environment field Define spec for development environment field openjs-foundation/package-metadata-interoperability-collab-space#15

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions