Skip to main content

Bundle

A bundle installs several separately identifiable plugins. Declare the exclusive bundle kind, list child manifest IDs in contains and declare their npm packages in dependencies. A bundle has no browser half.

contains identifies what to install; dependencies tells npm where to obtain it. Both are needed. plugin-bundle uses sibling file dependencies for the supplied page and widget examples; a distributable package needs resolvable dependency specifications.

Ownership and removal

Installing a bundle promotes missing children to the top level of the user's plugin installation. Each child can be enabled, moved or removed independently.

Newly installed children carry installedBy: <bundle-id> in their configuration. Removing the bundle removes only children carrying that ownership marker. A child already present remains untouched. Reinstalling a child directly clears the marker, making it independent of the bundle.

Expansion stops after one level. A bundle listed inside another bundle is installed but is not recursively expanded; this avoids cycles.

A client-only child can be active without a main entry: the daemon serves its browser bundle without executing host code. Multiple UI registrations from one package are not a bundle; see Kinds.