tsdk
Version:
Type-safe API development and code share tool for TypeScript projects.
69 lines (68 loc) • 2.27 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getNpmCommand = exports.getPkgManager = void 0;
const child_process_1 = require("child_process");
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
function getPkgManager(baseDir) {
try {
for (const { lockFile, packageManager } of [
{ lockFile: 'yarn.lock', packageManager: 'yarn' },
{ lockFile: 'pnpm-lock.yaml', packageManager: 'pnpm' },
{ lockFile: 'package-lock.json', packageManager: 'npm' },
]) {
if (fs_1.default.existsSync(path_1.default.join(baseDir, lockFile))) {
return packageManager;
}
}
const userAgent = process.env.npm_config_user_agent;
if (userAgent) {
if (userAgent.startsWith('yarn')) {
return 'yarn';
}
else if (userAgent.startsWith('pnpm')) {
return 'pnpm';
}
}
try {
(0, child_process_1.execSync)('yarn --version', { stdio: 'ignore' });
return 'yarn';
}
catch (_a) {
(0, child_process_1.execSync)('pnpm --version', { stdio: 'ignore' });
return 'pnpm';
}
}
catch (_b) {
return 'npm';
}
}
exports.getPkgManager = getPkgManager;
function getNpmCommand(baseDir) {
const pkgManager = getPkgManager(baseDir);
const commandMap = {
pkg: pkgManager,
npxCmd: 'npx',
installCmd: 'npm install',
runCmd: 'npm run',
};
if (pkgManager === 'pnpm') {
commandMap.npxCmd = 'pnpm';
commandMap.installCmd = 'pnpm install';
commandMap.runCmd = 'pnpm';
}
else if (pkgManager === 'yarn') {
try {
(0, child_process_1.execSync)('yarn dlx --help', { stdio: 'ignore' });
commandMap.npxCmd = 'yarn';
commandMap.installCmd = 'yarn';
commandMap.runCmd = 'yarn';
}
catch (_a) { }
}
return commandMap;
}
exports.getNpmCommand = getNpmCommand;