publish-snapshot
v0.0.0-snapshot-36b3062
Published
CLI utility for publishing a snapshot build of your npm package by appending the current Git commit hash to the package version. The command temporarily mutates `package.json`, publishes with npm, and immediately restores the original file.
Readme
publish-snapshot
CLI utility for publishing a snapshot build of your npm package by appending the
current Git commit hash to the package version. The command temporarily mutates
package.json, publishes with npm, and immediately restores the original file.
- Publishes the package with a version like
1.2.3-snapshot-a1b2c3d - Aborts if your Git working tree is dirty or
package.jsonalready holds a pre-release version - Forwards any extra CLI flags directly to
npm publish
Quick start
npx -y publish-snapshot@latestRun the command inside the root of the package you want to publish. The script performs the following steps:
- Prints the tool version for traceability.
- Verifies the Git repository has no uncommitted changes.
- Reads the current
package.jsonversion. - Creates a snapshot version in the form
originalVersion-snapshot-<shortSHA>. - Temporarily writes that version to
package.json, runsnpm publish, then restores the original file contents.
If any of the steps fails, the command exits with code 1 and package.json
is reverted to its original state.
Passing arguments to npm publish
Extra arguments after the command are forwarded to npm publish. For example,
to publish to a specific dist-tag and registry:
npx -y publish-snapshot@latest --tag snapshot --registry https://registry.npmjs.org/Requirements & guarantees
- Node.js 20+ (needed for JSON import attributes and top-level
await) - A clean Git working tree; the script refuses to run otherwise
npmavailable on yourPATH
The original package.json is always restored, even when npm publish fails.
Common issues
- Dirty working tree: Commit or stash changes before running. The command
uses
git status --porcelainto enforce a clean tree. - Pre-release versions: The tool rejects versions such as
1.0.0-beta.1. Snapshot publishing only works from release versions. - SemVer parsing errors: Ensure your
package.jsonversion follows semantic versioning (e.g.1.2.3).
Local development
Clone the repository, install dependencies, and use the Verdaccio script to exercise the CLI against a private registry:
npm install
npm run registry # starts Verdaccio locally on http://127.0.0.1:4873/
npm run dev # publishes to the local registry using snapshot semanticsContributions are welcome via pull requests.
