Registry resolution
Resolve plugins from local workspaces, npm packages, or remote registries.
Resolution order
Control where ContractSpec loads plugins and how versions are resolved.
.contractsrc.json
{
"plugins": [
{
"id": "markdown-generator",
"package": "@contractspec/plugin.markdown-generator",
"capabilities": ["generator"],
"options": {
"outputDir": "./docs/generated",
"format": "table"
}
}
],
"pluginRegistry": {
"resolutionOrder": ["workspace", "npm", "remote"],
"allowPrerelease": false,
"sources": {
"remote": "https://registry.contractspec.io"
}
}
}Custom registry resolvers
Register resolver plugins to load plugins from private registries.
registry-resolver.ts
import type { RegistryResolverPlugin } from "@contractspec/lib.plugins";
export const PrivateRegistryResolver: RegistryResolverPlugin = {
meta: {
id: "private-registry",
version: "1.0.0",
type: "registryResolver",
provides: ["private-registry"],
},
resolve: async (request) => {
// Fetch plugin package metadata from private registry
const result = await fetch(
"https://registry.acme.io/" + request.package
);
return result.json();
},
};