Socket
Socket
Sign inDemoInstall

read-package-json-fast

Package Overview
Dependencies
2
Maintainers
6
Versions
18
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    read-package-json-fast

Like read-package-json, but faster


Version published
Weekly downloads
7.1M
increased by1.08%
Maintainers
6
Install size
21.3 kB
Created
Weekly downloads
 

Package description

What is read-package-json-fast?

The read-package-json-fast npm package is designed to quickly read and parse package.json files in a Node.js environment. It is optimized for performance and provides a simple API for accessing package metadata.

What are read-package-json-fast's main functionalities?

Read and parse package.json

This feature allows you to read and parse the contents of a package.json file asynchronously. The function returns a promise that resolves with the parsed package data.

const readPackageJsonFast = require('read-package-json-fast');

async function getPackageData() {
  try {
    const packageData = await readPackageJsonFast('path/to/package.json');
    console.log(packageData);
  } catch (error) {
    console.error('Error reading package.json:', error);
  }
}

getPackageData();

Other packages similar to read-package-json-fast

Changelog

Source

3.0.2 (2022-12-13)

Bug Fixes

  • 28e4e58 use fs/promises (@lukekarrys)

Readme

Source

read-package-json-fast

Like 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

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, 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:

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).

FAQs

Last updated on 13 Dec 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc