packageManagerForBase() — tailwindcss Function Reference
Architecture documentation for the packageManagerForBase() function in packages.ts from the tailwindcss codebase.
Entity Profile
Dependency Diagram
graph TD f9fc76b6_5e68_f997_f790_5f5925280d18["packageManagerForBase()"] 3570f589_2f69_c1ce_f4d4_16edf9b89280["packages.ts"] f9fc76b6_5e68_f997_f790_5f5925280d18 -->|defined in| 3570f589_2f69_c1ce_f4d4_16edf9b89280 f01ffd27_4737_8e3c_147a_bc30c19a4b4d["warn()"] f9fc76b6_5e68_f997_f790_5f5925280d18 -->|calls| f01ffd27_4737_8e3c_147a_bc30c19a4b4d style f9fc76b6_5e68_f997_f790_5f5925280d18 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/@tailwindcss-upgrade/src/utils/packages.ts lines 77–138
let packageManagerForBase = new DefaultMap(async (base) => {
do {
// 1. Check package.json for a `packageManager` field
let packageJsonPath = resolve(base, 'package.json')
try {
let packageJsonContent = await fs.readFile(packageJsonPath, 'utf-8')
let packageJson = JSON.parse(packageJsonContent)
if (packageJson.packageManager) {
if (packageJson.packageManager.includes('bun')) {
return 'bun'
}
if (packageJson.packageManager.includes('yarn')) {
return 'yarn'
}
if (packageJson.packageManager.includes('pnpm')) {
return 'pnpm'
}
if (packageJson.packageManager.includes('npm')) {
return 'npm'
}
}
} catch {}
// 2. Check for common lockfiles
try {
await fs.access(resolve(base, 'bun.lockb'))
return 'bun'
} catch {}
try {
await fs.access(resolve(base, 'bun.lock'))
return 'bun'
} catch {}
try {
await fs.access(resolve(base, 'pnpm-lock.yaml'))
return 'pnpm'
} catch {}
try {
await fs.access(resolve(base, 'yarn.lock'))
return 'yarn'
} catch {}
try {
await fs.access(resolve(base, 'package-lock.json'))
return 'npm'
} catch {}
// 3. If no lockfile is found, we might be in a monorepo
let previousBase = base
base = dirname(base)
// Already at the root
if (previousBase === base) {
if (!didWarnAboutPackageManager) {
didWarnAboutPackageManager = true
warn('Could not detect a package manager. Please manually update `tailwindcss` to v4.')
}
return Promise.reject('No package manager detected')
}
} while (true)
})
Domain
Subdomains
Calls
Source
Frequently Asked Questions
What does packageManagerForBase() do?
packageManagerForBase() is a function in the tailwindcss codebase, defined in packages/@tailwindcss-upgrade/src/utils/packages.ts.
Where is packageManagerForBase() defined?
packageManagerForBase() is defined in packages/@tailwindcss-upgrade/src/utils/packages.ts at line 77.
What does packageManagerForBase() call?
packageManagerForBase() calls 1 function(s): warn.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free