Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
make has sync
+ use a default map as a cache for reading the package.json file
  • Loading branch information
RobinMalfait committed May 6, 2025
commit f6084be6a61da721580f6fbb3a51489fba692f68
23 changes: 16 additions & 7 deletions packages/@tailwindcss-upgrade/src/utils/packages.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { exec as execCb } from 'node:child_process'
import { readFileSync } from 'node:fs'
import fs from 'node:fs/promises'
import { dirname, resolve } from 'node:path'
import { promisify } from 'node:util'
Expand All @@ -12,6 +13,15 @@ const SAVE_DEV: Record<string, string> = {
bun: '-d',
}

const manifests = new DefaultMap((base) => {
try {
let packageJsonPath = resolve(base, 'package.json')
return readFileSync(packageJsonPath, 'utf-8')
} catch {
return ''
}
})

export function pkg(base: string) {
return {
async add(packages: string[], location: 'dependencies' | 'devDependencies' = 'dependencies') {
Expand All @@ -29,15 +39,12 @@ export function pkg(base: string) {
prefix: '↳ ',
})
throw e
} finally {
manifests.delete(base)
}
},
async has(name: string) {
try {
let packageJsonPath = resolve(base, 'package.json')
let packageJsonContent = await fs.readFile(packageJsonPath, 'utf-8')
return packageJsonContent.includes(`"${name}":`)
} catch {}
return false
has(name: string) {
return manifests.get(base).includes(`"${name}":`)
},
async remove(packages: string[]) {
let packageManager = await packageManagerForBase.get(base)
Expand All @@ -49,6 +56,8 @@ export function pkg(base: string) {
prefix: '↳ ',
})
throw e
} finally {
manifests.delete(base)
}
},
}
Expand Down