UNPKG

@rnm/pm

Version:

Unified Package Manager for Node.js

4 lines (3 loc) 2.54 kB
#!/usr/bin/env node const require = globalThis.require ?? (await import('node:module')).createRequire(import.meta.url); import{a as l,b as p,e as g,h as d,i as f}from"../chunk-V6P44Y2P.js";import s from"node:fs/promises";import a from"node:path";import o from"node:process";await y();async function y(){switch(o.argv[2]??""){case"enable-shim":await x();break;case"check-pm":await b();break;case"-v":case"--version":j();break;default:P()}}function P(){console.log("Usage:"),console.log(" pm-util <command> [options]"),console.log(""),console.log("Commands:"),console.log(" enable-shim [npm] [yarn] [pnpm]"),console.log(" Enable shims for specified package managers"),console.log(""),console.log(" check-pm"),console.log(" Verify the running package manager matches project configuration"),console.log(' Recommended: Add to package.json scripts, e.g. "prepare": "pm-util check-pm"')}async function b(){let e=d();e||(console.error("\u274C Unable to detect the current package manager"),o.exit(1));let n=await g();n||(console.error("\u274C No package manager configured in package.json. Please configure a package manager using one of the following methods:"),console.error(' - Add "packageManager" field in package.json'),console.error(' - Add "devEngines.packageManager" field in package.json'),console.error(' - Add package manager in "engines" field in package.json'),o.exit(1)),n.name!==e.name&&(console.error("\u274C Package manager mismatch:"),console.error(` Expected: ${n.name}`),console.error(` Current: ${e.name}`),o.exit(1)),n.version||(console.warn("\u26A0\uFE0F Unable to detect the package manager version"),o.exit(0)),n.version&&e.version&&!f.default.satisfies(e.version,n.version)&&(console.warn("\u26A0\uFE0F Package manager version mismatch:"),console.warn(` Expected: ${n.name}@${n.version}`),console.warn(` Current: ${e.name}@${e.version}`),o.exit(0))}async function x(){let e=o.argv.slice(3),n=[];e.length===0?n.push("npm","yarn","pnpm"):(e.includes("npm")&&n.push("npm"),e.includes("yarn")&&n.push("yarn"),e.includes("pnpm")&&n.push("pnpm"));let r=o.argv[1];if(!r||!a.isAbsolute(r))throw new Error(`The path '${String(r)}' is not an absolute path.`);let c=await s.realpath(a.dirname(r)),h=import.meta.filename,u=import.meta.dirname,k=a.join(u,"..","shims"),v=a.extname(h);for(let t of n.flatMap(i=>[i,p[i]])){let i=a.join(k,`${t}.cli${v}`);await s.chmod(i,493);let m=a.join(c,t),w=a.relative(c,i);await s.unlink(m).catch($=>{}),await s.symlink(w,m)}}function j(){let e=l();console.log(e.version)}