在 "npm" 注册表中找不到包 "my-custom-package"

Couldn't find package "my-custom-package" on the "npm" registry

我有一个 Node.js 项目,分为几个自定义包,每个包都有自己的 package.json 文件。这是该特定项目的所有自定义代码。有的有dependencies/devDependencies,有的时候运行宁

yarn install

已安装所有依赖项,一切顺利。

package.json个文件内容如下:

{
  "name": "my-custom-package-name", // This changes in each package.json file
  "version": "1.0.3-beta.1", // The version is the same in all package.json files
  "private": true,
  "repository": "https://github.com/my-organization/my-private-repo",
  [...]
}

现在我被要求将项目部署到生产环境并增加新版本的包版本号。因此,我通过将预发布标记删除为:

来更改每个 package.json 文件中的版本号
"version": "1.0.3.1"

但是,如果我再次 运行 yarn install,对于每个预发布标签从自定义包的版本号中删除的包,我会收到这样的错误:

yarn install v1.3.2
[1/4] Resolving packages...
error Couldn't find package "my-custom-package-name" on the "npm" registry.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

为什么删除预发布标签后会发生这种情况? 为什么有预发布标签时不会发生这种情况?

这些包没有被用作项目任何其他包的依赖项,那么为什么 yarn 试图在 npm 上解析一个与 package.json 文件的名称和版本相匹配的包?

我真的在网上四处寻找与此相关的答案,但找不到任何相关内容。

我找到了问题的答案,原因是通过从版本号中删除“-beta”,版本号不再符合 sematinc 版本控制。在此处查看其他 SO 问题:

npm: Why is a version "0.1" invalid?

换句话说,版本号必须是由点分隔的3个数字,之后可以用破折号加上预发布标签或内部版本号。但是,根据 semver.org.

,由 4 位数字组成的版本号不是有效的版本号

所以出于某种原因,yarn 输出的是 "error Couldn't find package",而不是抱怨我的包的版本号格式非法。