Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

pkg-types

unjs19.8mMIT1.3.1TypeScript support: included

Node.js utilities and TypeScript definitions for package.json and tsconfig.json

readme

pkg-types

npm version npm downloads codecov

Node.js utilities and TypeScript definitions for package.json and tsconfig.json.

Install

# ✨ Auto-detect
npx nypm install pkg-types

# npm
npm install pkg-types

# yarn
yarn add pkg-types

# pnpm
pnpm install pkg-types

# bun
bun install pkg-types

# deno
deno install pkg-types

Usage

readPackageJSON

import { readPackageJSON } from "pkg-types";
const localPackageJson = await readPackageJSON();
// or
const packageJson = await readPackageJSON("/fully/resolved/path/to/folder");

writePackageJSON

import { writePackageJSON } from "pkg-types";

await writePackageJSON("path/to/package.json", pkg);

resolvePackageJSON

import { resolvePackageJSON } from "pkg-types";
const filename = await resolvePackageJSON();
// or
const packageJson = await resolvePackageJSON("/fully/resolved/path/to/folder");

readTSConfig

import { readTSConfig } from "pkg-types";
const tsconfig = await readTSConfig();
// or
const tsconfig2 = await readTSConfig("/fully/resolved/path/to/folder");

writeTSConfig

import { writeTSConfig } from "pkg-types";

await writeTSConfig("path/to/tsconfig.json", tsconfig);

resolveTSConfig

import { resolveTSConfig } from "pkg-types";
const filename = await resolveTSConfig();
// or
const tsconfig = await resolveTSConfig("/fully/resolved/path/to/folder");

resolveFile

import { resolveFile } from "pkg-types";
const filename = await resolveFile("README.md", {
  startingFrom: id,
  rootPattern: /^node_modules$/,
  matcher: (filename) => filename.endsWith(".md"),
});

resolveLockFile

Find path to the lock file (yarn.lock, package-lock.json, pnpm-lock.yaml, npm-shrinkwrap.json) or throws an error.

import { resolveLockFile } from "pkg-types";
const lockfile = await resolveLockFile(".");

findWorkspaceDir

Try to detect workspace dir by in order:

  1. Nearest .git directory
  2. Farthest lockfile
  3. Farthest package.json file

If fails, throws an error.

import { findWorkspaceDir } from "pkg-types";
const workspaceDir = await findWorkspaceDir(".");

Types

Note: In order to make types working, you need to install typescript as a devDependency.

You can directly use typed interfaces:

import type { TSConfig, PackageJSON } from "pkg-types";

You can also use define utils for type support for using in plain .js files and auto-complete in IDE.

import type { definePackageJSON } from 'pkg-types'

const pkg = definePackageJSON({})
import type { defineTSConfig } from 'pkg-types'

const pkg = defineTSConfig({})

Alternatives

License

Published under the MIT license. Made by @pi0, @danielroe and community 💛

changelog

Changelog

All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

v1.3.1

compare changes

🩹 Fixes

  • Detect bun.lock (#210)

🏡 Chore

❤️ Contributors

v1.3.0

compare changes

🚀 Enhancements

  • types: Add packageManager field to PackageJson (#204)

🏡 Chore

🤖 CI

  • Enable tests on windows (#205)

❤️ Contributors

v1.2.1

compare changes

🩹 Fixes

  • Optional fields from publishConfig (#194)
  • tsconfig: Add missing references key (#198)

🏡 Chore

✅ Tests

  • packagejson: Add tests for partial objects (e2dc735)

❤️ Contributors

v1.2.0

compare changes

🚀 Enhancements

  • Add more fields into package.json (#190)

🏡 Chore

❤️ Contributors

v1.1.3

compare changes

🩹 Fixes

  • Fix types for PackageJson exports (#185)

🏡 Chore

  • Update tsconfig and enable type tests (#184)

🤖 CI

  • Enable --typecheck for vitest step (cacfa8e)

❤️ Contributors

  • Pooya Parsa (@pi0)

v1.1.2

compare changes

🩹 Fixes

  • Expand the types of exports (#183)

🏡 Chore

❤️ Contributors

v1.1.1

compare changes

🩹 Fixes

  • Check for all lockfiles before ascending directories (#179)

🏡 Chore

❤️ Contributors

v1.1.0

compare changes

🚀 Enhancements

  • Auto detect and preserve format (#175)
  • Try to parse package.json as jsonc (#176)

🩹 Fixes

  • Add object syntax browser field type (#145)
  • types: Allow extends as array (#151)
  • Add imports field to the types (#160)

💅 Refactors

  • Migrate from jsonc-parser to unjs/confbox (#174)

📖 Documentation

  • Add missing jsdocs (#171)

🏡 Chore

❤️ Contributors

v1.0.3

compare changes

🩹 Fixes

  • Add exports.types field (#120)

📖 Documentation

  • Remove duplicate usage in readme (#115)

🤖 CI

  • Remove lint workflow from matrix (a5a00af)
  • Revert to node 16 (f6cb62c)

❤️ Contributors

v1.0.2

🩹 Fixes

  • Resolve paths with pathe (#72)

📖 Documentation

  • Remove duplicate section (#96)

🏡 Chore

  • Add @danielroe to license (648f7c5)
  • Switch to changelogen for release (489eba0)
  • Update mlly (6b7b8fa)

🎨 Styles

  • Lint with prettier (d74afab)

❤️ Contributors

1.0.1 (2022-11-14)

1.0.0 (2022-11-14)

Features

  • allow caching readPackageJSON and readTSConfig (#47) (ca127d0)

0.3.6 (2022-10-26)

Features

Bug Fixes

  • readPackageJSON and readPackageJSON can be called without id (#39) (1b149ef)

0.3.5 (2022-09-06)

Features

0.3.4 (2022-08-18)

Bug Fixes

  • types: rename licence to license (#17) (ddda0b5)

0.3.3 (2022-06-20)

Bug Fixes

  • add missing scripts key and allow extensibility (#11) (453d375)

0.3.2 (2021-11-30)

Features

  • allow passing find options to resolvers (9835524)

0.3.1 (2021-10-27)

Bug Fixes

  • pkg: run prepare before publish (a8c79fc)

0.3.0 (2021-10-27)

⚠ BREAKING CHANGES

  • improve resolving (#4)

Features

0.2.3 (2021-10-26)

0.2.2 (2021-10-26)

Features

  • add readNearest* and findNearest* utilities (#3) (fe5997e)

0.2.1 (2021-10-18)

Bug Fixes

  • pkg: update package.json (cd12484)

0.2.0 (2021-10-14)

⚠ BREAKING CHANGES

  • use jsonc parser

Features

0.1.5 (2021-10-14)

0.1.4 (2021-10-14)

Features

Bug Fixes

  • default to any (resolves key signature issue) (a0563e4)
  • prevent TS enums from polluting type (403686d)

0.1.3 (2021-10-13)

Features

Bug Fixes

  • default to any (resolves key signature issue) (a0563e4)
  • prevent TS enums from polluting type (403686d)

0.1.2 (2021-10-13)

Bug Fixes

0.1.1 (2021-10-13)