@hyperfrontend/project-scope/project/packagepackage
package.json reading, dependency inspection, and version-check helpers.
readPackageJson and readPackageJsonIfExists parse package.json into a typed PackageJson shape. findNearestPackageJson walks up from a starting path to locate the closest manifest. getDependencies, getDevDependencies, getPeerDependencies, getProductionDependencies, and getAllDependencies slice the manifest into typed maps; hasDependency, hasInstalledPackage, and getDependencyVersion answer presence and version-range questions. getWorkspaces / hasWorkspaces surface monorepo workspace declarations from npm, Yarn, or pnpm.
API Reference
ƒ Functions
Parameters
| Name | Type | Description |
|---|---|---|
§startPath | string | Starting path |
Returns
stringExample
Finding nearest package.json
import { findNearestPackageJson } from '@hyperfrontend/project-scope'
const pkgDir = findNearestPackageJson('./src/deep/nested/file.ts')
// => '/path/to/project'Parameters
| Name | Type | Description |
|---|---|---|
§packageJson | PackageJson | Parsed package.json |
Returns
DependencyMapExample
Getting all merged dependencies
import { getAllDependencies } from '@hyperfrontend/project-scope'
const allDeps = getAllDependencies(packageJson)
if ('typescript' in allDeps) {
console.log('TypeScript version:', allDeps['typescript'])
}Parameters
| Name | Type | Description |
|---|---|---|
§packageJson | PackageJson | Parsed package.json |
Returns
AllDependenciesExample
Extracting all dependencies
import { getDependencies } from '@hyperfrontend/project-scope'
const deps = getDependencies(packageJson)
console.log('Runtime:', Object.keys(deps.dependencies))
console.log('Dev:', Object.keys(deps.devDependencies))Parameters
Returns
stringExample
Getting dependency version
import { getDependencyVersion } from '@hyperfrontend/project-scope'
const version = getDependencyVersion(packageJson, 'react')
// => '^18.2.0' or nullParameters
| Name | Type | Description |
|---|---|---|
§packageJson | PackageJson | Parsed package.json |
Returns
DependencyMapExample
Getting development dependencies
import { getDevDependencies } from '@hyperfrontend/project-scope'
const devDeps = getDevDependencies(packageJson)
// => { 'jest': '^29.0.0', 'typescript': '^5.0.0' }Parameters
| Name | Type | Description |
|---|---|---|
§packageJson | PackageJson | Parsed package.json |
Returns
DependencyMapExample
Getting peer dependencies
import { getPeerDependencies } from '@hyperfrontend/project-scope'
const peerDeps = getPeerDependencies(packageJson)
// => { 'react': '^18.0.0', 'react-dom': '^18.0.0' }Parameters
| Name | Type | Description |
|---|---|---|
§packageJson | PackageJson | Parsed package.json |
Returns
DependencyMapExample
Getting production dependencies
import { getProductionDependencies } from '@hyperfrontend/project-scope'
const prodDeps = getProductionDependencies(packageJson)
// => { 'express': '^4.18.0', 'lodash': '^4.17.21' }Parameters
| Name | Type | Description |
|---|---|---|
§packageJson | PackageJson | Parsed package.json |
Returns
string[]Example
Getting workspace patterns
import { getWorkspaces } from '@hyperfrontend/project-scope'
const patterns = getWorkspaces(packageJson)
// => ['packages/*', 'apps/*']hasDependency(packageJson: PackageJson, name: string, depTypes?: ("dependencies" | "devDependencies" | "peerDependencies" | "optionalDependencies")[]): boolean
Parameters
Returns
booleanExample
Checking for a dependency
import { hasDependency } from '@hyperfrontend/project-scope'
// Check any dependency type
hasDependency(packageJson, 'lodash')
// Check only production dependencies
hasDependency(packageJson, 'lodash', ['dependencies'])Parameters
Returns
booleanExample
Checking installed packages
import { hasInstalledPackage } from '@hyperfrontend/project-scope'
if (hasInstalledPackage('/project', 'typescript')) {
console.log('TypeScript is installed')
}Parameters
| Name | Type | Description |
|---|---|---|
§packageJson | PackageJson | Parsed package.json |
Returns
booleanExample
Checking for workspaces
import { hasWorkspaces } from '@hyperfrontend/project-scope'
if (hasWorkspaces(packageJson)) {
console.log('This is a monorepo')
}Parameters
| Name | Type | Description |
|---|---|---|
§projectPath | string | Project directory path or path to package.json |
Returns
PackageJsonExample
Reading package.json
import { readPackageJson } from '@hyperfrontend/project-scope'
const pkg = readPackageJson('/path/to/project')
console.log(pkg.name, pkg.version)Parameters
| Name | Type | Description |
|---|---|---|
§projectPath | string | Project directory path or path to package.json |
Returns
PackageJsonExample
Reading package.json if it exists
import { readPackageJsonIfExists } from '@hyperfrontend/project-scope'
const pkg = readPackageJsonIfExists('/path/to/project')
if (pkg) {
console.log('Found:', pkg.name)
}