aboutsummaryrefslogtreecommitdiff
path: root/node_modules/package-hash/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/package-hash/README.md')
-rw-r--r--node_modules/package-hash/README.md79
1 files changed, 79 insertions, 0 deletions
diff --git a/node_modules/package-hash/README.md b/node_modules/package-hash/README.md
new file mode 100644
index 000000000..d2f29c8fa
--- /dev/null
+++ b/node_modules/package-hash/README.md
@@ -0,0 +1,79 @@
+# 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 4 and above, including Windows
+support.