Skip to content

Hashes native dependencies for React Native & Expo projects

Notifications You must be signed in to change notification settings

ridafkih/dephash

Repository files navigation

Dephash

A tool to hash native dependencies for React Native & Expo projects

DepHash is a tool that allows you to automate the hashing of native dependencies for React Native and Expo projects. It can be used to easily track changes in dependencies and ensure reproducibility.

Installation   ·   CLI   ·   Usage   ·   Contribute

Installation

To install Dephash, simply use your favourite Node.js package manager.

yarn add -D dephash
npm install --save-dev dephash

CLI

Dephash exposes a CLI for you to generate a hash.

yarn dephash hash --raw
Generates a hash based off the dependencies & files from the current working directory.

Options:
  --root-directory                 will be where the the scan begins for files
  --algorithm <xxhash|sha1>        [default: 'sha1'] which algorithm to use
  --exclude-ios                    will not consider native ios changes
  --exclude-android                will not consider native android changes
  --exclude-expo-config            will not consider expo changes (ie. *.plugin.js, app.config.js, etc.)
  --factor-all-changes             will generate a new hash even if the changes are non-native
  --additional-patterns <pattern>  glob patterns seperated by ","
  --raw, -r                        whether to just return the raw value in stdout
  --output <path>, -o <path>       a path with a path to write out
  --eas-only                       whether or not to only run on eas
  -h, --help                       display help for command

Usage

Dephash allows you to hash the dependencies in the current working directory as a string. The following is an example usage.

import { hashDependencies } from "dephash";

const hash = hashDependencies();
console.log(hash);

This will hash the dependencies in the current working directory and print the resulting hash as a string to the console.

Options

You can pass options to hashDependencies to customize its behaviour.

rootDirectory

Where the scan for files that will contribute to the hash will come from.

excludePlatforms

An array of Platform enums that allows you to exclude the native dependencies of specific platforms. The possible values of this enum are:

  • Platform.Android
  • Platform.Ios

excludeExpoConfig

A boolean value that allows you to exclude the Expo configuration files from the hash.

factorAllDependencyChanges

A boolean value that allows you to factor in all dependency changes into the hash, including those outside of native dependencies.

additionalPatterns

An array of additional glob patterns to include in the dependency hashing.

Here's an example of using the options:

import { hashDependencies, Platform } from "dephash";

const options = {
  excludePlatforms: [Platform.Ios],
  excludeExpoConfig: true,
  factorAllDependencyChanges: false,
  additionalPatterns: ["**/someFolder/*"],
};

const hash = hashDependencies(options);
console.log(hash);

Contribute

Feel free to contribute to the repository. Pull requests and issues with feature requests are super welcome!

About

Hashes native dependencies for React Native & Expo projects

Resources

Stars

Watchers

Forks

Packages

No packages published