init project
This commit is contained in:
+80
@@ -0,0 +1,80 @@
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
export function detectJsPackageManager(root) {
|
||||
if (fs.existsSync(path.join(root, 'pnpm-lock.yaml')))
|
||||
return 'pnpm';
|
||||
if (fs.existsSync(path.join(root, 'yarn.lock')))
|
||||
return 'yarn';
|
||||
if (fs.existsSync(path.join(root, 'bun.lockb')) || fs.existsSync(path.join(root, 'bun.lock')))
|
||||
return 'bun';
|
||||
return 'npm';
|
||||
}
|
||||
export function installCommandFor(pm) {
|
||||
switch (pm) {
|
||||
case 'pnpm':
|
||||
return { command: 'pnpm', args: ['install'] };
|
||||
case 'yarn':
|
||||
return { command: 'yarn', args: ['install'] };
|
||||
case 'bun':
|
||||
return { command: 'bun', args: ['install'] };
|
||||
case 'npm':
|
||||
default:
|
||||
return { command: 'npm', args: ['install'] };
|
||||
}
|
||||
}
|
||||
export function runScriptCommandFor(pm, script, extraArgs = []) {
|
||||
switch (pm) {
|
||||
case 'pnpm':
|
||||
return { command: 'pnpm', args: ['run', script, ...extraArgs] };
|
||||
case 'yarn':
|
||||
return { command: 'yarn', args: [script, ...extraArgs] };
|
||||
case 'bun':
|
||||
return { command: 'bun', args: ['run', script, ...extraArgs] };
|
||||
case 'npm':
|
||||
default:
|
||||
return { command: 'npm', args: ['run', script, ...(extraArgs.length ? ['--', ...extraArgs] : [])] };
|
||||
}
|
||||
}
|
||||
export function addDependencyCommandFor(pm, packages, options) {
|
||||
if (options.remove) {
|
||||
switch (pm) {
|
||||
case 'pnpm':
|
||||
return { command: 'pnpm', args: ['remove', ...packages] };
|
||||
case 'yarn':
|
||||
return { command: 'yarn', args: ['remove', ...packages] };
|
||||
case 'bun':
|
||||
return { command: 'bun', args: ['remove', ...packages] };
|
||||
case 'npm':
|
||||
default:
|
||||
return { command: 'npm', args: ['uninstall', ...packages] };
|
||||
}
|
||||
}
|
||||
switch (pm) {
|
||||
case 'pnpm':
|
||||
return { command: 'pnpm', args: ['add', ...(options.dev ? ['-D'] : []), ...packages] };
|
||||
case 'yarn':
|
||||
return { command: 'yarn', args: ['add', ...(options.dev ? ['-D'] : []), ...packages] };
|
||||
case 'bun':
|
||||
return { command: 'bun', args: ['add', ...(options.dev ? ['-d'] : []), ...packages] };
|
||||
case 'npm':
|
||||
default:
|
||||
return { command: 'npm', args: ['install', ...(options.dev ? ['-D'] : []), ...packages] };
|
||||
}
|
||||
}
|
||||
export function readPackageJson(root) {
|
||||
const file = path.join(root, 'package.json');
|
||||
if (!fs.existsSync(file))
|
||||
return null;
|
||||
try {
|
||||
return JSON.parse(fs.readFileSync(file, 'utf8'));
|
||||
}
|
||||
catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
export function hasDependency(pkg, name) {
|
||||
if (!pkg)
|
||||
return false;
|
||||
return Boolean(pkg.dependencies?.[name] || pkg.devDependencies?.[name]);
|
||||
}
|
||||
//# sourceMappingURL=packageManager.js.map
|
||||
Reference in New Issue
Block a user