|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- # package-hash
-
- Generates a hash for an installed npm package, useful for salting caches.
- [AVA](https://github.com/sindresorhus/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
-
- ```console
- $ npm install --save package-hash
- ```
-
- ## Usage
-
- ```js
- 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:
-
- ```js
- 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:
-
- ```js
- 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.
|