unjs / nypm

🌈 Unified Package Manager for Node.js and Bun
MIT License
437 stars 13 forks source link

Infer package manager from command #116

Closed pi0 closed 4 months ago

pi0 commented 4 months ago

When using npx, yarn dlx, pnpx, bunx, the default package manager can be infered.

pi0 commented 4 months ago

Quick investigation using an echo CLI (@pi0/cli-debug) on MacOS. We could rely on argv[1] path with name part of the path


npx @pi0/cli-debug: /.npm/_npx/

{
  "argv0": "node",
  "argv": [
    "/Users/pooya/.nvm/versions/node/v20.11.1/bin/node",
    "/Users/pooya/.npm/_npx/507efa6d92f396f3/node_modules/.bin/cli-debug"
  ],
  "execArgv": [],
  "execPath": "/Users/pooya/.nvm/versions/node/v20.11.1/bin/node",
  "cwd": "/Users/pooya"
}

yarn dlx @pi0/cli-debug: /.yarn/cache/

{
  "argv0": "/Users/pooya/.nvm/versions/node/v20.11.1/bin/node",
  "argv": [
    "/Users/pooya/.nvm/versions/node/v20.11.1/bin/node",
    "/private/var/folders/hf/lrc_fvsd0qv7rd6q57mkqp180000gn/T/xfs-272c1b09/dlx-73452/.yarn/cache/@pi0-cli-debug-npm-0.0.5-e53d620a60-fbd2dd75d6.zip/node_modules/@pi0/cli-debug/cli.mjs"
  ],
  "execArgv": [],
  "execPath": "/Users/pooya/.nvm/versions/node/v20.11.1/bin/node",
  "cwd": "/Users/pooya"
}

bunx @pi0/cli-debug: /bunx-501-

{
  "argv0": "node",
  "argv": [
    "/Users/pooya/.nvm/versions/node/v20.11.1/bin/node",
    "/private/tmp/bunx-501-@pi0/cli-debug@0.0.5/node_modules/.bin/cli-debug"
  ],
  "execArgv": [],
  "execPath": "/Users/pooya/.nvm/versions/node/v20.11.1/bin/node",
  "cwd": "/Users/pooya"
}

pnpx @pi0/cli-debug: /pnpm/store/

{
  "argv0": "node",
  "argv": [
    "/Users/pooya/.nvm/versions/node/v20.11.1/bin/node",
    "/Users/pooya/Library/pnpm/store/v3/tmp/dlx-78545/node_modules/@pi0/cli-debug/cli.mjs"
  ],
  "execArgv": [],
  "execPath": "/Users/pooya/.nvm/versions/node/v20.11.1/bin/node",
  "cwd": "/Users/pooya"
}