This is a monorepo for the Hyperparam project.
It contains the following packages, published to npm:
@hyparam/components: a library of React components and utilities for building Hyperparam UIs.hyperparam: a cli tool for viewing arbitrarily large datasets in the browser.
It also contains the following applications:
hightable-demo: an example project showing how to use hightable.hyparquet-demo: an example project showing how to use hyparquet.
Install all the workspaces with:
npm installLint all the workspaces:
npm run lint -wsTest all the workspaces:
npm test -wsCompute the coverage for all the workspaces:
npm run coverage -wsBuild all the workspaces (they are built in order, so the dependencies are built first - it's defined manually by the order of the workspaces in the package.json):
npm run build -wsRun an app:
hightable-demo:
npm run dev -w hightable-demohyparquet-demo:
npm run dev -w hyparquet-demohyperparam:
npm run dev -w hyperparamcomponents:
npm run dev -w @hyparam/componentsThe monorepo is managed with npm workspaces. Some workspaces are dependencies of others. Currently:
@hyparam/componentsis a dependency ofhyperparamandhyparquet-demo.
It means that if you make a change to @hyparam/components, you need to rebuild it before developing hyperparam or hyparquet-demo.
Also, if you increment the version of @hyparam/components, you need to update the version of @hyparam/components in the package.json of hyperparam and hyparquet-demo, as we use exact versions in the package.json of the workspaces. Note that we don't have to increment the version after every change, only when we want to publish a new version with a significant batch of changes.
The root package.json contains a special field, overrides, which sets the shared dependencies versions we want to have in all the workspaces. The "check_dependencies" GitHub action checks that the dependencies are the same in all the workspaces (npm ls would fail if dependency version mismatch).