VendurePluginMetadata
VendurePluginMetadata
Defines the metadata of a Vendure plugin. This interface is an superset of the Nestjs ModuleMetadata
(which allows the definition of imports
, exports
, providers
and controllers
), which means
that any Nestjs Module is a valid Vendure plugin. In addition, the VendurePluginMetadata allows the definition of
extra properties specific to Vendure.
interface VendurePluginMetadata extends ModuleMetadata {
configuration?: PluginConfigurationFn;
shopApiExtensions?: APIExtensionDefinition;
adminApiExtensions?: APIExtensionDefinition;
entities?: Array<Type<any>> | (() => Array<Type<any>>);
compatibility?: string;
}
- Extends:
ModuleMetadata
configuration
A function which can modify the VendureConfig object before the server bootstraps.
shopApiExtensions
The plugin may extend the default Vendure GraphQL shop api by providing extended schema definitions and any required resolvers.
adminApiExtensions
The plugin may extend the default Vendure GraphQL admin api by providing extended schema definitions and any required resolvers.
entities
Array<Type<any>> | (() => Array<Type<any>>)
The plugin may define custom TypeORM database entities.
compatibility
string
The plugin should define a valid semver version string to indicate which versions of Vendure core it is compatible with. Attempting to use a plugin with an incompatible version of Vendure will result in an error and the server will be unable to bootstrap.
If a plugin does not define this property, a message will be logged on bootstrap that the plugin is not guaranteed to be compatible with the current version of Vendure.
To effectively disable this check for a plugin, you can use an overly-permissive string such as >0.0.0
.
Example
compatibility: '^3.0.0'
APIExtensionDefinition
An object which allows a plugin to extend the Vendure GraphQL API.
interface APIExtensionDefinition {
schema?: DocumentNode | (() => DocumentNode | undefined);
resolvers?: Array<Type<any>> | (() => Array<Type<any>>);
scalars?: Record<string, GraphQLScalarType> | (() => Record<string, GraphQLScalarType>);
}
schema
DocumentNode | (() => DocumentNode | undefined)
Extensions to the schema.
Example
const schema = gql`extend type SearchReindexResponse {
timeTaken: Int!
indexedItemCount: Int!
}`;
resolvers
Array<Type<any>> | (() => Array<Type<any>>)
An array of resolvers for the schema extensions. Should be defined as Nestjs GraphQL resolver
classes, i.e. using the Nest @Resolver()
decorator etc.
scalars
Record<string, GraphQLScalarType> | (() => Record<string, GraphQLScalarType>)
A map of GraphQL scalar types which should correspond to any custom scalars defined in your schema. Read more about defining custom scalars in the Apollo Server Custom Scalars docs
PluginConfigurationFn
This method is called before the app bootstraps and should be used to perform any needed modifications to the VendureConfig.
type PluginConfigurationFn = (
config: RuntimeVendureConfig,
) => RuntimeVendureConfig | Promise<RuntimeVendureConfig>