This is an unofficial, independent, and experimental fork of VotingWorks' VxSuite voting system.
This is an exploration of a parallel reality where the build system is managed with Bazel (or similar tooling).
All package.json
files have been consolidated into the root package.json
,
dropping the previous pnpm
workspaces setup. This attempts to simplify the
task of keeping dependency versions consistent across the codebase and reducing
the overhead of creating new packages. This required moving aliased
@votingworks/
import paths over to the tsconfig
compilerOptions.paths
feature.
All tsconfig.json
files have also been consolidated into the root config to
simplify the scope of the prototype. This hasn't had a noticeable performance
impact on the development/IDE workflow, since the repo is still fairly small,
but likely won't scale for a much larger repo. At that point, it should be
fairly straightforward to extend this approach to auto-generate/manage tsconfig
project references.
In the same spirit of simplification, all other relevant configuration files
have been consolidated (eslint
, vite
, playwright
, etc).
TODO
TODO
TODO
TODO
TODO
TODO
./script/install_bazel.sh
bazel run //:dev_env
bazel build //libs/basics/collections
bazel build //libs/ballot-interpreter:rust
bazel test //libs/basics/collections:tests
bazel test //libs/ballot-interpreter:rust_tests
Run again to see cached results.
bazel build //libs/basics/...
bazel test //libs/basics/...
bazel run //:typecheck //libs/basics/...
bazel run //:lint //libs/basics/...
bazel run //apps/mark:prod
bazel run //apps/mark:dev
All necessary dependencies will be built before running.
GPLv3