Home

Awesome

Depot: A Javascript devtool orchestrator

<img width="1233" alt="Screen Shot 2023-07-18 at 11 26 06 AM" src="https://github.com/cognitive-engineering-lab/depot/assets/663326/49cb46f9-bc88-46f5-9a1c-71ee6f1ffdea">

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:

A few benefits of using Depot:

Installation

As prerequisites, you must have NodeJS (≥20) and pnpm (≥9.9) 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: