1. package-hash
Generates a hash for an installed npm package, useful for salting caches
package-hash
Package: package-hash
Created by: novemberborn
Last modified: Thu, 23 Jun 2022 06:31:07 GMT
Version: 4.0.0
License: ISC
Downloads: 13,184,342
Repository: https://github.com/novemberborn/package-hash

Install

npm install package-hash
yarn add package-hash

package-hash

Generates a hash for an installed npm package, useful for salting caches.
AVA for example caches precompiled test
files. It generates a salt for its cache based on the various packages that are
used when compiling the test files.

package-hash can generate an appropriate hash based on the package location
(on disk) and the package.json file. This hash is salted with a hash
for the package-hash itself.

package-hash can detect when the package-to-be-hashed is a Git repository. In
the AVA example this is useful when you're debugging one of the packages used to
compile the test files. You can clone it locally and use npm link so AVA can
find the clone. The hash will include the HEAD (.git/HEAD) and its
corresponding ref (e.g. .git/refs/heads/master), any packed refs
(.git/packed-refs), as well as the diff (git diff) for any non-committed
changes. This makes it really easy to test your changes without having to
explicitly clear the cache in the parent project.

Installation

 $ npm install --save package-hash

Usage

 const packageHash = require('package-hash')

// Asynchronously:
const hash = await packageHash(require.resolve('babel-core/package.json'))

// Synchronously:
const hash = packageHash.sync(require.resolve('babel-core/package.json'))

packageHash() / packageHash.sync() must be called with a file path for an
existing package.json file. To get the path to an npm package it's easiest to
use require.resolve('the-name/package.json').

You can provide multiple paths:

 const hash = await packageHash([
  require.resolve('babel-core/package.json'),
  require.resolve('babel-preset-es2015/package.json')
])

An optional salt value can also be provided:

 const hash = await packageHash(require.resolve('babel-core/package.json'), 'salt value')

API

packageHash(paths, salt?)

paths: string | string[] ➜ can be a single file path, or an array of paths.

salt: Array | Buffer | Object | string ➜ optional. If an Array or Object (not null) it is first converted to a JSON string.

Returns a promise for the hex-encoded hash string.

packageHash.sync(paths, salt?)

paths: string | string[] ➜ can be a single file path, or an array of paths.

salt: Array | Buffer | Object | string ➜ optional. If an Array or Object (not null) it is first converted to a JSON string.

Returns a hex-encoded hash string.

Compatibility

package-hash has been tested with Node.js 8 and above, including Windows
support.

RELATED POST

10 Must-Know Windows Shortcuts That Will Save You Time

10 Must-Know Windows Shortcuts That Will Save You Time

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Navigating AWS Networking: Essential Hacks for Smooth Operation

Navigating AWS Networking: Essential Hacks for Smooth Operation

Achieving Stunning Visuals with Unity's Global Illumination

Achieving Stunning Visuals with Unity's Global Illumination

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code