首页 > 解决方案 > 如何将 npm 包配置为自动更新

问题描述

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

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

"nestjs-notifications": "0.0.10"

我该如何配置它,以便它将语义版本安装为:

"nestjs-notifications": "^0.0.10".

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


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

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

标签: typescriptnpmpackage.json

解决方案


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

插入符号范围的 npm 文档中,它指出:

“允许不修改元组中最左边的非零数字的更改[major, minor, patch]。换句话说,这允许版本1.0.0及更高版本的补丁和次要更新,版本的补丁更新,版本0.X >=0.1.0不更新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"
    

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


推荐阅读