如何配置 npm 包自动更新

How to configure npm package to auto-update

我做了这个包:https://www.npmjs.com/package/nestjs-notifications

当我 运行 npm install nestjs-notifications --save 时,它将安装正常并添加到注册表中,但会将其保存为:

"nestjs-notifications": "0.0.10"

如何将其配置为安装语义版本为:

"nestjs-notifications": "^0.0.10".

目前无法自动获取新版本,我必须在package.json中手动更改版本。


编辑: 我的相关 config 设置如下(基本上是默认设置)。所以它应该用插入符号保存:

save = true
save-bundle = false
save-dev = false
save-exact = false
save-optional = false
save-prefix = "^"
save-prod = false
...

您遇到的是预期行为。使用 0.0.x semver 安装任何 pkg 都不会在 package.json 中获得默认插入符号 (^) 前缀,您的软件包也不会更新。

caret ranges 的 npm 文档中指出:

"Allows changes that do not modify the left-most non-zero digit in the [major, minor, patch] tuple. In other words, this allows patch and minor updates for versions 1.0.0 and above, patch updates for versions 0.X >=0.1.0, and no updates for versions 0.0.X."

注意摘录(上)中的粗体强调是我添加的。

基本上,只有当您将包裹的 semver 提高到 >=0.1.0 之后,您才会开始获得所需的行为。


显示插入符号 (^) 何时添加和未添加到 package.json:

的演示
  1. 安装 <0.1.0 版本的软件包。出于演示目的,我们将通过以下命令 运行 安装 eslint 版本 0.0.7

    npm i eslint@0.0.7 --save
    

    前面的命令将以下内容添加到 package.json:

    "eslint": "0.0.7"
    

    注意插入符号(^)未包含在内。

  2. 现在通过 运行 执行以下命令卸载 eslint

    npm un eslint --save
    
  3. 接下来安装 eslint 的第一个可用版本,即 >=0.1.0,即 运行 以下内容:

    run npm i eslint@0.1.0 --save
    

    这次前面的命令将以下内容添加到 package.json::

    "eslint": "^0.1.0"
    

    注意插入符号(^)已包含在内。