Packages

Package Manager

Exon Studio has a package registry that lets you download community plugins and starter templates, and publish your own reusable projects for others to install.

Browsing packages in the editor

Open the Packages tab from the Home screen's left sidebar to browse the registry. Packages come in two kinds:

  • Templates - full example projects you can Clone into a new project folder.
  • Plugins - node libraries you Download to make their node types available in your own projects.

The Browse tab searches the registry; Downloaded lists what you already have locally.

The Packages tab in the Home screen, listing downloadable example templates

The exon-package.json file

Every project has an exon-package.json file describing it as a package. You can edit its fields directly, or through Project Settings (the gear icon at the top of the Explorer panel):

The Project Settings dialog, Package tab, showing name, version, description, license, author, and entry fields

A minimal exon-package.json looks like this:

{
  "name": "+yourscope/your-package",
  "version": "1.0.0",
  "entry": "main.exon"
}
  • name - the package's scoped name (see "Scopes" below).
  • version - a semantic version (1.0.0, 1.1.0, 2.0.0, ...).
  • entry - the board file the package resolves to by default when another project depends on it. Defaults to main.exon when omitted.

Other recognized fields include title, description, license, author, category, homepage, repository, private, dependencies, nodeDependencies, scripts, and entries (for a package that exposes several named boards instead of a single entry point, as the standard example packages do).

The command line: expm

Command-line installs and publishing go through expm, the exon package manager CLI (a separate tool from the editor, installable with npm install -g exon-package-manager):

expm install [dir]
expm uninstall [name]
expm pack [dir] [--compress]
expm publish [dir] [--compress] [--registry <url>]
expm login [--registry <url>]
expm logout [--registry <url>]
  • expm install reads the exon-package.json in the current directory (or dir) and installs every declared dependency from the registry, verifying each download's hash before extracting it.
  • expm publish packs the project the same way as expm pack, then uploads and publishes the archive. Both name and version must be set in exon-package.json, and publishing requires being logged in.
  • expm login prompts for your Exon Studio account email and password and stores a session in ~/.exon/auth.json. In CI, set the EXON_REGISTRY_TOKEN environment variable instead.

Scopes

Package names are scoped: +scopename/package-name, for example +google/apis. The leading + marks the scope. Every account gets a default scope matching its username, and accounts on a paid plan can register additional scopes from the Scopes tab of the Dashboard. You can only publish under a scope your account owns.

Versioning

Use semantic versioning. The registry rejects publishing the same name and version twice - bump the version in exon-package.json before publishing again.

Publishing under a scoped name requires an Indie or Pro subscription; see Pricing for plan details.

Unpublishing

Individual versions can be unpublished from your Dashboard, under the My Packages tab. Unpublishing is a soft delete: the version disappears from search and browse results, but a project that already depends on that exact version can still resolve and install it directly.