Publishing to npm
To publish to the npm registry you'll need to use the command pnpm publish. You should read the docs for that command before continuing. The documentation for npm publish is also a really useful reference and well worth a read.
But before that, there are some steps you should take to check that everything is ready...
Reviewing package.json
Let's imagine you created a project called @skirtle/example-lib. Your directory structure might be something like this:
📁 example-lib
📁 packages
📁 docs
📄 package.json
📁 playground
📄 package.json
📁 example-lib
📁 src
📄 package.json ← This file
📄 package.jsonThere are several package.json files, but for publishing the library to the npm registry, the important one is packages/example-lib/package.json.
You should review that file carefully to ensure it has all the fields set correctly before you attempt to publish the package. Most important are the package's name and version.
When that file is first created it will contain "private": true. That prevents the library from being published by accident. You'll need to remove that line when you're ready to make your first release.
Check dependencies and peerDependencies
If you've only worked on applications, you might be used to bumping dependency versions to ensure they're as recent as possible.
But when you're publishing a library you need to be a bit more careful. For example, not every application that wants to use your library will be on the latest version of Vue. You need to decide what the minimum version you want to support is, and test that it actually works against that version.
You also need to be careful about exactly where each dependency is placed: dependencies, peerDependencies and/or devDependencies. In an application it often doesn't matter if dependencies are in the wrong section, but for a library it's important to have everything in the right place.
The default project created by this tool won't have a dependencies section, with vue listed in peerDependencies instead. All other dependencies will be in devDependencies, as they're only used to develop the library and aren't needed in the consuming application.
If you've added other dependencies to dependencies or peerDependencies then you may also need to add them to the rollupOptions section of vite.config.mts, otherwise they may be bundled in with you library.
Install dependencies
Ensure your local node_modules directory is synced up with the latest code:
pnpm installCheck the build
You need to build the project before publishing:
pnpm buildCheck the files in dist all contain what you're expecting. Also check the README.md, which by default is copied to the main project directory from the root directory as part of the build. This file is included in the published package and is what people will see when they view your package via the npm website.
Do a dry run
A 'dry run' will go through most of the steps of publishing the package but without actually adding it to the registry. Assuming you're in the main package directory (the one containing package.json and dist), run:
pnpm publish --tag=latest --access=public --dry-run --publish-branch=mainIf you have local files that aren't checked into git then you may need to add --no-git-checks too.
The dry run will show which files are going to be included in the published package. pnpm should automatically include the LICENSE file, taken from the workspace root. The README.md isn't automatically taken from the workspace root, so that's copied as part of the build. You should also see package.json and the files in dist. Files from src shouldn't be needed.
Authenticating
Before you can publish you'll need to create an account on the npm registry.
pnpm doesn't have a separate command to authenticate with the registry, it'll use the token in .npmrc. You can use the command npm login (note npm, not pnpm) to populate that token. See https://docs.npmjs.com/cli/v11/commands/npm-login.
Learn about unpublishing
If you make a mistake when publishing a package, you can't easily undo it.
Before you publish a package, you should also learn about how to unpublish a package.
See https://docs.npmjs.com/policies/unpublish.
Publishing
When you're finally ready to publish, the command is the same as we used earlier for the dry run, but without the --dry-run flag:
pnpm publish --tag=latest --access=public --publish-branch=mainThe package name and version will be taken from the package.json.
GitHub releases
It's common to create a release on GitHub when publishing a package. This includes release notes for the release and adds a tag to the repository.
Automating the process
This scaffolding tool doesn't currently have any support for automating this process, but you can find various examples of automation scripts if you look through the GitHub repos for large projects.