Publish a plugin
Publish your plugin so other people can install and use it in Paseo. Start with a working plugin project, then choose where to share it:
- npm: publish a package on the public npm registry.
- GitHub or Git: let users install from a repository.
Publish on npm
The scaffold prepares the package files and development dependencies. You choose the package name and release version.
1. Set your package name and version
From the plugin directory, set your package details and allow publication. Replace @acme with your npm scope:
npm pkg set name=@acme/paseo-review version=1.0.0
npm pkg delete private
2. Check and publish
npm run typecheck
npm pack --dry-run
npm publish --access public
Check the pack output includes any assets you added to the project.
3. Test the published plugin
On a daemon host with npm available:
paseo plugin install npm:@acme/paseo-review@1.0.0
Users can also paste npm:@acme/paseo-review into Settings → Plugins → Plugin source.
Package configuration
The scaffold includes this files list in package.json:
{
"files": [
"paseo-plugin.json",
"index.client.ts",
"index.client.tsx",
"index.server.ts",
"index.server.tsx",
"client/",
"server/",
"shared/"
]
}
- Add any assets stored outside these directories to
files. - Keep the scaffold's SDK and host libraries in
devDependencies. - Add other runtime libraries with
npm install <package>. Paseo installs their dependencies too. - The npm package name identifies the source. The manifest's
ididentifies the installed plugin.
See the project reference for entry points and runtime boundaries.
Plugins with a build step
Paseo compiles TypeScript. An ordinary plugin needs no separate build before publication. If your plugin generates files, include the generated output in the package.
Installation scripts do not run automatically. If a dependency needs host-specific setup, declare a preparation command.
Generated files and dependencies
- Generate code and assets before running
npm publish. - Keep generated JavaScript in its runtime directory and import it from the TypeScript entry.
- Include generated assets in
files. - Keep host-provided modules external when producing your own bundle.
- Remove Git-only dependency-install commands from the published manifest; npm installation already installs production dependencies.
Paseo skips npm lifecycle scripts during installation, including dependency scripts. For example, a native dependency that needs rebuilding requires an explicit preparation command.
Publish a private package with GitHub Packages
You can publish a company plugin to GitHub Packages. Follow the npm steps above, using your organization's scope, and replace the publish command with:
npm publish --registry=https://npm.pkg.github.com
Configure GitHub authentication and package access before publishing.
To install the plugin, configure npm on the daemon host, as the user running Paseo:
-
Add your organization's registry to
~/.npmrc:@acme:registry=https://npm.pkg.github.com -
Log in with your GitHub username and a personal access token (classic) as the password. The token needs
read:packagesand access to the package.npm login --scope=@acme --auth-type=legacy --registry=https://npm.pkg.github.com -
Install the plugin:
paseo plugin install npm:@acme/paseo-review
Paseo uses the host's npm registry settings and credentials for installation and updates. In the app, enter only the source identifier.
Share through GitHub or Git
Push the plugin project to a repository. Users can install it with:
paseo plugin install github:acme/paseo-review
For another Git host:
paseo plugin install git:https://git.example.com/acme/paseo-review.git
If your plugin has runtime npm dependencies, commit package-lock.json and add a preparation
command to paseo-plugin.json:
{
"build": [["npm", "ci", "--omit=dev"]]
}
npm ciinstalls the versions in the committed lockfile.--omit=devexcludes development tools.- npm must be available on the daemon host.
Plugins that only use Paseo's host libraries need no preparation command.