Publishing
Publish your plugin to plugins.cook.md and anyone can install it from Cook Editor's Extensions view. The marketplace speaks the Open VSX protocol, so the usual vsce and ovsx tools work.
One-time setup
- Sign in at plugins.cook.md with GitHub and create a personal access token (PAT) in your dashboard.
- Create the namespace matching the
publisherin yourpackage.json(once per namespace). For the example plugins, whose publisher iscooklang:
Use your own publisher name in place ofnpx ovsx create-namespace cooklang -r https://plugins.cook.md -p <PAT>cooklang.
Package
The example plugins define two scripts in package.json (with @vscode/vsce and ovsx as dev dependencies):
"package": "vsce package --no-dependencies",
"publish:marketplace": "ovsx publish --packagePath meal-journal-$npm_package_version.vsix -r https://plugins.cook.md"
To build a new version:
cd meal-journal
npm version patch # or minor/major — updates package.json
npm run package # builds meal-journal-<version>.vsix
Install the .vsix from the Extensions view to test the exact file you're about to publish.
Publish
OVSX_PAT=<PAT> npm run publish:marketplace
Verify with curl https://plugins.cook.md/api/cooklang/meal-journal (your namespace and plugin name in place of cooklang/meal-journal). The new version then shows up in the Extensions view.
Gotchas
@types/vscodenewer thanengines.vscode:vscerefuses to package. Pin it with a tilde to the same minor, e.g."@types/vscode": "~1.100.0"with"engines": { "vscode": "^1.100.0" }.- Missing files in the package: check
.vscodeignore— compiled output (out/) and any media your manifest points to must be included; sources and tests can be left out. - Depending on the Cooklang API: check
cooklang.api.versionon activation and tell the user to update Cook Editor if it's missing — older editors don't have it.