Skip to content

Add plugin.json manifest support alongside box.json #1976

@bpamiri

Description

@bpamiri

Summary

Add declarative plugin.json manifest support for plugins, inspired by LuCLI's module.json format. This enables future features (service registration, middleware, semver deps) without breaking existing plugins.

Proposed Manifest Format

{
  "name": "authenticateThis",
  "version": "2.1.0",
  "description": "Authentication plugin for Wheels",
  "author": "Plugin Author",
  "wheelsVersion": ">=3.0.0 <4.0.0",
  "mixin": "controller",
  "dependencies": {
    "someOtherPlugin": ">=1.0.0"
  },
  "services": {
    "auth": {
      "class": "AuthService",
      "scope": "singleton"
    }
  },
  "middleware": ["AuthMiddleware"]
}

Changes

  • Extend $pluginMetaData() to look for plugin.json in the plugin directory
  • Parse manifest and populate plugin metadata from it
  • Fall back to existing CFC metadata / box.json if plugin.json not present
  • Existing plugins with no manifest continue to work unchanged

Files

  • vendor/wheels/Plugins.cfc:184-196 — extend $pluginMetaData()

Phase

Phase 1 — Cleanup & Foundation (3.x, no breaking changes)

Reference

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions