Oxide
Oxide is a Rust CLI for scaffolding JavaScript and TypeScript projects from Oxide templates.
It can:
- create a new project from a template
- download and cache templates locally
- reuse cached templates between runs
- authenticate against the Oxide service
- publish a GitHub repository as an Oxide template
Installation
Quick install
Linux and macOS:
|
Windows PowerShell:
irm https://raw.githubusercontent.com/oxide-cli/oxide/main/install.ps1 | iex
Unix installers place the oxide binary into ~/.local/bin, so make sure that directory is in your PATH.
Install with npm
Install the CLI globally from npm:
This package downloads the matching Oxide binary from the latest GitHub release during postinstall.
Install with cargo
Install the crate from crates.io:
Cargo installs the oxide binary into Cargo's bin directory, so make sure ~/.cargo/bin is in your PATH.
Manual install from GitHub Releases
Download the latest release artifact for your platform:
Getting started
Log in first:
Create a new project from a template:
If the template is not cached yet, Oxide downloads the latest version automatically before generating the project.
Commands
oxide new <NAME> <TEMPLATE_NAME>
oxide install-template <TEMPLATE_NAME>
oxide delete <TEMPLATE_NAME>
oxide installed
oxide login
oxide logout
oxide account
oxide publish-template <TEMPLATE_URL>
Common workflows
Install or refresh a template in the local cache:
List cached templates:
Remove a cached template:
Show the currently authenticated account:
Publish a GitHub repository as a template:
How templates work
- Oxide stores local data under
~/.oxide/. - Cached templates live in
~/.oxide/cache/templates. - Authentication data is stored in
~/.oxide/auth.json. - Template downloads are version-aware: Oxide tracks the remote template commit SHA and skips re-downloading when the cached version is already current.
- Template files ending with
.teraare rendered during project generation and written without the.terasuffix.
Available template variables:
project_nameproject_name_kebabproject_name_snaketauri_user_name
Template publishing notes
Published templates are expected to include an oxide.template.json manifest in the template root. Oxide uses that manifest to track template metadata such as the template name, version, source repository, and whether the template is official.
Development
Run the CLI locally:
Run tests:
License
Licensed under either of these:
- MIT license (LICENSE-MIT)
- Apache License 2.0 (LICENSE-Apache)