# read-package-json-fast

> Like read-package-json, but faster

Latest version **6.0.0** (published 2026-05-15) · ISC license · 0 weekly downloads

## Install

```sh
npm install read-package-json-fast
pnpm add read-package-json-fast
yarn add read-package-json-fast
bun add read-package-json-fast
```

## Health

**Score 55/100 (C)** — status: active.

Positive: no vulnerabilities; has provenance; high maintenance score.

Warnings: low downloads; no types; no esm support.

## Facts

| | |
|---|---|
| Version | 6.0.0 |
| Published | 2026-05-15 |
| First published | 2019-11-23 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Node | ^22.22.2 \|\| ^24.15.0 \|\| >=26.0.0 |
| Dependencies | 2 |
| Unpacked size | 8.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 51 |
| Author | GitHub Inc. |
| Maintainers | saquibkhan, npm-cli-ops, reggi, owlstronaut |

## Links

- npm: https://www.npmjs.com/package/read-package-json-fast
- Repository: https://github.com/npm/read-package-json-fast
- Homepage: https://github.com/npm/read-package-json-fast#readme
- Issues: https://github.com/npm/read-package-json-fast/issues
- npm.io page: https://npm.io/package/read-package-json-fast

## Dependencies (2)

- [npm-normalize-package-bin](https://npm.io/package/npm-normalize-package-bin.md) ^6.0.0
- [json-parse-even-better-errors](https://npm.io/package/json-parse-even-better-errors.md) ^6.0.0

## Recent versions

- 6.0.0 (latest) — 2026-05-15
- 5.0.0 — 2025-10-23
- 4.0.0 — 2024-09-25
- 3.0.2 — 2022-12-13
- 3.0.1 — 2022-10-17
- 3.0.0 — 2022-10-10
- 2.0.3 — 2021-07-22
- 2.0.2 — 2021-02-22
- 1.2.2 — 2021-02-10
- 2.0.1 — 2021-02-05
- 2.0.0 — 2021-02-05
- 1.2.1 — 2020-08-20
- 1.2.0 — 2020-08-20
- 1.1.3 — 2020-01-17
- 1.1.2 — 2020-01-17
- … 6 more at https://npm.io/package/read-package-json-fast/versions

## README

# read-package-json-fast

Like [`read-package-json`](http://npm.im/read-package-json), but faster and
more accepting of "missing" data.

This is only suitable for reading package.json files in a node_modules
tree, since it doesn't do the various cleanups, normalization, and warnings
that are beneficial at the root level in a package being published.

## USAGE

```js
const rpj = require('read-package-json-fast')

// typical promisey type API
rpj('/path/to/package.json')
  .then(data => ...)
  .catch(er => ...)

// or just normalize a package manifest
const normalized = rpj.normalize(packageJsonObject)
```

Errors raised from parsing will use
[`json-parse-even-better-errors`](http://npm.im/json-parse-even-better-errors),
so they'll be of type `JSONParseError` and have a `code: 'EJSONPARSE'`
property.  Errors will also always have a `path` member referring to the
path originally passed into the function.

## Indentation

To preserve indentation when the file is saved back to disk, use
`data[Symbol.for('indent')]` as the third argument to `JSON.stringify`, and
if you want to preserve windows `\r\n` newlines, replace the `\n` chars in
the string with `data[Symbol.for('newline')]`.

For example:

```js
const data = await readPackageJsonFast('./package.json')
const indent = Symbol.for('indent')
const newline = Symbol.for('newline')
// .. do some stuff to the data ..
const string = JSON.stringify(data, null, data[indent]) + '\n'
const eolFixed = data[newline] === '\n' ? string
  : string.replace(/\n/g, data[newline])
await writeFile('./package.json', eolFixed)
```

Indentation is determined by looking at the whitespace between the initial
`{` and the first `"` that follows it.  If you have lots of weird
inconsistent indentation, then it won't track that or give you any way to
preserve it.  Whether this is a bug or a feature is debatable ;)

## WHAT THIS MODULE DOES

- Parse JSON
- Normalize `bundledDependencies`/`bundleDependencies` naming to just
  `bundleDependencies` (without the extra `d`)
- Handle `true`, `false`, or object values passed to `bundleDependencies`
- Normalize `funding: <string>` to `funding: { url: <string> }`
- Remove any `scripts` members that are not a string value.
- Normalize a string `bin` member to `{ [name]: bin }`.
- Fold `optionalDependencies` into `dependencies`.
- Set the `_id` property if name and version are set.  (This is
  load-bearing in a few places within the npm CLI.)

## WHAT THIS MODULE DOES NOT DO

- Warn about invalid/missing name, version, repository, etc.
- Extract a description from the `README.md` file, or attach the readme to
  the parsed data object.
- Read the `HEAD` value out of the `.git` folder.
- Warn about potentially typo'ed scripts (eg, `tset` instead of `test`)
- Check to make sure that all the files in the `files` field exist and are
  valid files.
- Fix bundleDependencies that are not listed in `dependencies`.
- Fix `dependencies` fields that are not strictly objects of string values.
- Anything involving the `directories` field (ie, bins, mans, and so on).

---
_Source: https://npm.io/package/read-package-json-fast · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
