RFC: Qwik Community Plugins Support #191
Labels
[STAGE-2] incomplete implementation
Remove this label when implementation is complete
[STAGE-2] not fully covered by tests yet
Remove this label when tests are verified to cover the implementation
[STAGE-2] unresolved discussions left
Remove this label when all critical discussions are resolved on the issue
[STAGE-3] docs changes not added yet
Remove this label when the necessary documentation for the feature / change is added
[STAGE-3] missing 2 reviews for RFC PRs
Remove this label when at least 2 core team members reviewed and approved the RFC implementation
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:
Goals you are trying to achieve:
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 likeqwik-
should be scanned for itsqwik-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:
https://docs.cypress.io/guides/component-testing/third-party-definitions
https://nx.dev/extending-nx/recipes/create-preset
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":
The text was updated successfully, but these errors were encountered: