-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Discussed in #20
Originally posted by shairez September 16, 2024
What is it about?
A way to expand Qwik without increasing core size
What's the motivation for this proposal?
Problems you are trying to solve:
- Currently the Qwik monorepo contains a lot of adapters, plugins and integrations. We would like to make sure anything that is in core stays stable over time and it's hard to do it with an ever growing number of possible integrations.
Goals you are trying to achieve:
- Keep qwik core stable and trustworthy
- Give a way to community contributors to integrate their package into the Qwik CLI
Any other context or information you want to share:
Proposed Solution / Feature
A Qwik plugin system.
Scanability
Every package in node_modules
that starts with a specific convention like qwik-
should be scanned for its qwik-plugin-manifest.json
file which describes specific instructions of which files to copy, modify, etc.
Extracting some of the existing plugins from core
Separating possible integrations as "maintained by core team" (anything under the QwikDev org) or "maintained by community" (anything under the QwikCommunity org) will allow the core team to take responsibility of fewer things but make sure they are always stable / maintained.
File management
We need to brainstorm how different types of plugins will look like (usually there is a difference between the types).
Plus, we would need to modify the Qwik CLI to be aware of external integrations so we could install or add
them with ease (running their script).
We would need to provide an infrastructure for copying new files and modifying existing files that are read from the plugin's manifest.
Discoverability
We need a way to list core plugins and community plugins in a searchable area under the Qwik docs
Links / References
Here are some examples for existing plugin systems from several projects:
Example for a "discover plugins" page -
(via @ianlet):
Adding this one for inspiration:
Which is the usual npm|pnpm|yarn create [...]
command.
And this one for an other example of "plugin registry":
Metadata
Metadata
Labels
Type
Projects
Status
Status