Home / File/ get-package-manager.ts — ui Source File

get-package-manager.ts — ui Source File

Architecture documentation for get-package-manager.ts, a typescript file in the ui codebase. 1 imports, 1 dependents.

File typescript FrameworkTooling TemplateSync 1 imports 1 dependents 2 functions

Entity Profile

Dependency Diagram

graph LR
  c183d6fb_71b5_5e4c_de0b_08e22a8776c9["get-package-manager.ts"]
  431e7980_c33b_b39b_e0bf_d65cfb64296c["ni"]
  c183d6fb_71b5_5e4c_de0b_08e22a8776c9 --> 431e7980_c33b_b39b_e0bf_d65cfb64296c
  c0bad345_818b_73b1_8d07_c1207eec1519["get-package-manager.test.ts"]
  c0bad345_818b_73b1_8d07_c1207eec1519 --> c183d6fb_71b5_5e4c_de0b_08e22a8776c9
  style c183d6fb_71b5_5e4c_de0b_08e22a8776c9 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { detect } from "@antfu/ni"

export async function getPackageManager(
  targetDir: string,
  { withFallback }: { withFallback?: boolean } = {
    withFallback: false,
  }
): Promise<"yarn" | "pnpm" | "bun" | "npm" | "deno"> {
  const packageManager = await detect({ programmatic: true, cwd: targetDir })

  if (packageManager === "yarn@berry") return "yarn"
  if (packageManager === "pnpm@6") return "pnpm"
  if (packageManager === "bun") return "bun"
  if (packageManager === "deno") return "deno"
  if (!withFallback) {
    return packageManager ?? "npm"
  }

  // Fallback to user agent if not detected.
  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"
}

export async function getPackageRunner(cwd: string) {
  const packageManager = await getPackageManager(cwd)

  if (packageManager === "pnpm") return "pnpm dlx"

  if (packageManager === "bun") return "bunx"

  return "npx"
}

Subdomains

Dependencies

  • ni

Frequently Asked Questions

What does get-package-manager.ts do?
get-package-manager.ts is a source file in the ui codebase, written in typescript. It belongs to the FrameworkTooling domain, TemplateSync subdomain.
What functions are defined in get-package-manager.ts?
get-package-manager.ts defines 2 function(s): getPackageManager, getPackageRunner.
What does get-package-manager.ts depend on?
get-package-manager.ts imports 1 module(s): ni.
What files import get-package-manager.ts?
get-package-manager.ts is imported by 1 file(s): get-package-manager.test.ts.
Where is get-package-manager.ts in the architecture?
get-package-manager.ts is located at packages/shadcn/src/utils/get-package-manager.ts (domain: FrameworkTooling, subdomain: TemplateSync, directory: packages/shadcn/src/utils).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free