High quality plugins for your commerce pleasure.
| Thumbnail | Description |
|---|---|
| Improves your sites UX by avoiding image pop-in. Generates image hashes for displaying blurry previews when loading images on the frontend. Image hashes condense the shape of your image into around 20-50 bytes. Yes, bytes, not kilobytes. See more |
|
| Let's you flexibly customize if and how you prevent users from registering with your Vendure instance. For example, reduce fraud by blocking disposable email providers or IP ranges from registering with your Vendure instance or harden your admin accounts by only allowing specific domains in email addresses. See more |
|
| Foundation for building notification inboxes and or changelogs for your users. Features channel aware, translatable and customizable notifications with read-receipts per user. See more |
|
| VS Code Extension to improve working on Vendure projects. See more |
This is a monorepo powered by Lerna. The folder structure is as follows:
packages/ # Each plugin is housed in a directory under `packages`
example-plugin/ # An example plugin to get you started
dev-server/ # The development server for testing the plugin
e2e/ # End-to-end tests for the plugin
src/ # The source code of the plugin
utils/ # Utility scripts for shared tasks
e2e/ # Helper functions for e2e tests
The reason we are using a monorepo is that it allows you to create multiple plugins without requiring a separate repository for each one. This reduces the maintenance burden and makes it easier to manage multiple plugins.
- Clone this repository
- Run
npm installfrom the root to install the dependencies cd packages/example-plugin- Run
npm run devto start the development server for the example plugin. - Modify the example plugin to implement your features.
This repo is set up with GraphQL Code Generator to generate TypeScript types
for the schema extensions in your plugins. To generate the types, run npm run generate from the plugin directory:
cd packages/example-plugin
npm run codegenThis should be done whenever you:
- make changes to the schema extensions in your plugin (
/src/api/api-extensions.ts) - make changes to GraphQL queries or mutations in your e2e tests (in
/e2e/graphql/**.ts) - make changes to the GraphQL queries or mutations in your plugin's admin UI (in
/src/ui/**.ts)
End-to-end (e2e) tests are run using npm run e2e from the plugin directory. This will start a Vendure server with the
plugin installed, run the tests in the e2e directory, and then shut down the server.
cd packages/example-plugin
npm run e2e- Go to the directory of the plugin you want to publish, e.g.
cd packages/example-plugin - Check the package version
- Finalize
CHANGELOG.md npm run codegenand see if types are all up to datenpm run e2enpm run buildnpm pack --dry-runto double checknpm publish- Tag commit like ( <version>-<plugin-name> ) - Example:
git tag -s v1.0.0-user-registration-guardgit push --tags
For an in-depth guide on publishing to NPM and the Vendure Hub, see our Publishing a Plugin guide.