npm Publish Latest Tag
A library for getting a tag value to supply to the npm publish
command so that updates to old major versions don't automatically get given the latest
tag.
Why use this?
If you provide no tags to the npm publish
command then npm automatically gives that release the latest
tag. The version with the latest
tag is the one a user will get if they npm install
without specifying a tag or a version.
This library returns a string for you to supply to the npm publish
command with the --tag
flag so that your current major version always keeps the latest
tag.
Updates to older major versions will get a tag that is specific to that major version. Pre-releases/alphas/betas/etc will be tagged as such for their major version, no matter if it's an older, current, or newer major version.
Examples
Scenario | Outputted tag value | Example where current version is 2.3.4 |
---|---|---|
Publishing new major version | latest |
3.0.0 ➜ latest
|
Publishing minor/patch to current major release | latest |
2.4.0 ➜ latest
|
Publishing minor/patch to old major release |
latest-X where X is the major version |
1.4.5 ➜ latest-1
|
Publishing pre-release/alpha/beta/etc |
latest-X-Y where X is the majorversion and Y is the first pre-release section |
3.0.0-beta ➜ latest-3-beta
|
Usage
To use this library, import it and run getLatestTag
, passing in the location of the package.json for the npm package:
var npmPublishLatestTag = require("npm-publish-latest-tag");
// ...
npmPublishLatestTag.getLatestTag("./package.json").then(tagToPublishWith => {
//...
});
import { getLatestTag } from "npm-publish-latest-tag";
// ...
const tagToPublishWith = await getLatestTag("./package.json");
//...
Contributing
This library is not in the top-level directory of its repository; it can be found in the ./core
directory.
License (ISC)
Copyright (c) 2021, Toby Smith tobysmith568@hotmail.co.uk
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.