High quality plugins for your commerce pleasure.
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 install
from the root to install the dependencies cd packages/example-plugin
- Run
npm run dev
to 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 codegen
This 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 codegen
and see if types are all up to datenpm run e2e
npm run build
npm pack --dry-run
to double checknpm publish
- Tag commit like ( <version>-<plugin-name> ) - Example:
git tag -s v1.0.0-user-registration-guard
git push --tags
For an in-depth guide on publishing to NPM and the Vendure Hub, see our Publishing a Plugin guide.