https://github.com/danielbiegler/bieglers-vendure-plugins
High quality plugins for your commerce pleasure.
https://github.com/danielbiegler/bieglers-vendure-plugins
ecommerce graphql headless plugin typescript vendure vendure-plugin vendure-plugins
Last synced: about 1 year ago
JSON representation
High quality plugins for your commerce pleasure.
- Host: GitHub
- URL: https://github.com/danielbiegler/bieglers-vendure-plugins
- Owner: DanielBiegler
- License: other
- Created: 2024-12-18T12:12:32.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-05-04T13:19:11.000Z (about 1 year ago)
- Last Synced: 2025-05-07T15:09:08.269Z (about 1 year ago)
- Topics: ecommerce, graphql, headless, plugin, typescript, vendure, vendure-plugin, vendure-plugins
- Language: TypeScript
- Homepage:
- Size: 5.2 MB
- Stars: 5
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Bieglers Vendure Plugins
High quality plugins for your commerce pleasure.
| Thumbnail | Description |
| ------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [](./packages/blurry-image-lazy-loading/) | 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 **kilo**bytes. |
| [](./packages/user-registration-guard/) | 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. |
## Structure
This is a monorepo powered by [Lerna](https://lerna.js.org/). 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.
## Getting started
1. Clone this repository
2. Run `npm install` from the root to install the dependencies
3. `cd packages/example-plugin`
4. Run `npm run dev` to start the development server for the example plugin.
5. Modify the example plugin to implement your features.
## Code generation
This repo is set up with [GraphQL Code Generator](https://www.graphql-code-generator.com/) to generate TypeScript types
for the schema extensions in your plugins. To generate the types, run `npm run generate` from the plugin directory:
```bash
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`)
## Testing
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.
```bash
cd packages/example-plugin
npm run e2e
```
## Publishing to NPM
1. Go to the directory of the plugin you want to publish, e.g. `cd packages/example-plugin`
2. `npm run build`
3. `npm publish`
For an in-depth guide on publishing to NPM and the Vendure Hub,
see our [Publishing a Plugin guide](https://docs.vendure.io/guides/how-to/publish-plugin/).