将以前的主要版本发布到没有标签的 npm 并避免使用最新版本

Publishing a previous major version to npm with no tag and avoiding latest

有没有最好的方法来发布 npm 包的先前主要版本而不为其添加标签?我们当前的主要版本是 3.x (v3) 所以我们 npm publish 那个版本自动给它 latest 标签。当我们发布 2.x 版本 (v2) 的更新时,我们必须给它一个标签,这样它就不会自动从 v3.latest 中获取 latest 标签。

我们可以做类似 previous 的事情,尽管其含义是主观的。实际上,我们 不需要 v2 的标签。如果人们想要安装 v2,Semver 会很好用。有没有比使用标签发布它并添加删除标签的 postpublish 脚本更好的解决方案来不添加不必要的标签? (我写的时候听起来很荒谬)

看着this comment from 2015, "Every publish must be associated with a dist-tag, by design." And I don't see a way to bypass the tag in the current code of libnpmpublish and npm,可惜了

因此,我认为您已经有了最好的选择:在另一个标签下发布,无论该标签是否临时。


但是,如果我能提出建议...

您可以考虑在名为 v2 的标签下发布以前的版本,而不是主观的 previous 标签。这是我注意到 Angular team 用于 LTS 版本的模式,例如:

虽然我认为它对消费者的用处很小,因为他们可以只是npm install @angular/core@11而不是npm install @angular/core@v11-lts,但它可能是一种更简洁的方法发布。