fix package manager detection

This commit is contained in:
Aman Varshney
2025-02-13 10:48:42 +05:30
parent 0b3405c743
commit 7481beea90
6 changed files with 27 additions and 26 deletions

View File

@@ -21,7 +21,6 @@
"@inquirer/prompts": "^7.3.1",
"chalk": "^5.3.0",
"commander": "^13.1.0",
"detect-package-manager": "^3.0.2",
"execa": "^8.0.1",
"fs-extra": "^11.2.0",
"gradient-string": "^3.0.0",

View File

@@ -1,11 +1,11 @@
import path from "node:path";
import { confirm, select } from "@inquirer/prompts";
import { detect } from "detect-package-manager";
import { execa } from "execa";
import fs from "fs-extra";
import ora from "ora";
import { setupTurso } from "./helpers/db-setup";
import type { PackageManager, ProjectConfig } from "./types";
import { getUserPkgManager } from "./utils/get-package-manager";
import { logger } from "./utils/logger";
export async function createProject(options: ProjectConfig) {
@@ -38,7 +38,7 @@ export async function createProject(options: ProjectConfig) {
let packageManager = options.packageManager;
if (!packageManager) {
const detectedPackageManager = await detect();
const detectedPackageManager = getUserPkgManager();
const useDetectedPackageManager = await confirm({
message: `Use detected package manager (${detectedPackageManager})?`,

View File

@@ -1,8 +1,10 @@
import { DEFAULT_CONFIG } from "../consts";
import type { ProjectConfig } from "../types";
import { getUserPkgManager } from "./get-package-manager";
export function generateReproducibleCommand(config: ProjectConfig): string {
const flags: string[] = [];
const defaultPackageManager = getUserPkgManager();
if (config.database !== DEFAULT_CONFIG.database) {
flags.push(`--database ${config.database}`);
@@ -12,7 +14,7 @@ export function generateReproducibleCommand(config: ProjectConfig): string {
}
if (
config.packageManager &&
config.packageManager !== DEFAULT_CONFIG.packageManager
config.packageManager !== defaultPackageManager
) {
flags.push(`--package-manager ${config.packageManager}`);
}

View File

@@ -0,0 +1,16 @@
export type PackageManager = "npm" | "pnpm" | "yarn" | "bun";
export const getUserPkgManager: () => PackageManager = () => {
const userAgent = process.env.npm_config_user_agent;
if (userAgent?.startsWith("yarn")) {
return "yarn";
}
if (userAgent?.startsWith("pnpm")) {
return "pnpm";
}
if (userAgent?.startsWith("bun")) {
return "bun";
}
return "npm";
};