Readme
Depot (formerly Graco) is a tool for orchestrating other Javascript devtools. As an analogy:
Depot works on Javascript workspaces that have been created by Depot, specifically those using the model JS workspace format. Depot supports the following commands:
depot new - creates a new workspace or package with devtools preinstalled
depot init - installs workspace dependencies with pnpm
depot build - type-checks with Typescript , lints with Biome , and:
For libraries, transpiles with Typescript
For scripts and websites, bundles with Vite
depot test - runs tests with Vitest
depot fmt - formats source files with Biome
depot doc - generates documentation with Typedoc
A few benefits of using Depot:
Depot works with either browser or Node packages.
Depot automatically runs command dependencies. For example, depot test will run depot build , and depot build will run depot init .
Depot provides an interactive terminal interface for showing the running output of processes when building in watch mode.
Installation
As prerequisites, you must have NodeJS (≥24) and pnpm (≥10) installed on your computer.
The install script will download a prebuilt binary if possible. Run the script as follows:
curl https://raw.githubusercontent.com/cognitive-engineering-lab/depot/main/scripts/install.sh | sh
Alternatively, you can follow one of these installation methods:
From crates.io
cargo install depot-js -- locked
From source
git clone https://github.com/cognitive-engineering-lab/depot
cd depot
cargo install -- path crates/depot -- locked
Usage
To get started, create a new package:
depot new my- lib
You can specify --target < lib| site| script> to indicate that the package is a library (a Javascript package used by other packages), a website (an HTML site that uses Javascript), or a script (a Javascript program that would be either run on the CLI or included as a < script > tag.) You can also specify --platform < browser| node> depending on whether your package is intended to run in the browser or via NodeJS.
You can also create a workspace and a package within that workspace, like this:
depot new - - workspace my- workspace
cd my- workspace
depot new my- lib
Inside the workspace, you can build all packages like this:
depot build
This generates a < package> / dist directory containing the built files. You can run in watch mode by passing - w like this:
depot build - w
Additional documentation about each command will be created soon once the Depot design is finalized.
Projects using Depot
Depot is used in a few of our projects: