npm-check-updates

npm-check-updates

自动化项目依赖升级工具

npm-check-updates是一个用于自动更新package.json依赖的开源工具。它可检测并升级依赖包到最新版本,同时保持原有的语义化版本规则。支持npm、yarn、pnpm等包管理器,提供命令行和模块化使用选项。该工具默认配置合理,且高度可定制,有助于开发者轻松维护项目依赖的最新状态。

npm-check-updates依赖更新package.json版本管理npmGithub开源项目

npm-check-updates

npm版本 构建状态

npm-check-updates 将你的 package.json 依赖项升级到最新版本,忽略指定的版本。

  • 保持现有的语义化版本策略,例如将 "react": "^17.0.2" 升级到 "react": "^18.3.1"
  • 仅修改 package.json 文件。运行 npm install 来更新已安装的包和 package-lock.json。
  • 默认设置合理,但高度可定制
  • 兼容 npm、yarn、pnpm、deno 和 bun
  • 支持命令行和模块使用
<img width="500" alt="示例输出" src="https://github.com/user-attachments/assets/4808618b-ac20-4fc0-92e0-a777de70a2b6">

$${\color{red}红色}$$ 主版本升级(包括所有主版本号为零的版本<br/> $${\color{cyan}青色}$$ 次版本升级<br/> $${\color{green}绿色}$$ 补丁版本升级<br/>

安装

全局安装以使用 npm-check-updates 或更短的 ncu

npm install -g npm-check-updates

或使用 npx 运行(仅支持长格式):

npx npm-check-updates

使用方法

检查所有项目依赖的最新版本:

$ ncu 正在检查 package.json [====================] 5/5 100% eslint 7.32.0 → 8.0.0 prettier ^2.7.1 → ^3.0.0 svelte ^3.48.0 → ^3.51.0 typescript >3.0.0 → >4.0.0 untildify <4.0.0 → ^4.0.0 webpack 4.x → 5.x 运行 ncu -u 以升级 package.json

升级项目的 package 文件:

确保你的 package 文件已经进行版本控制,且所有更改都已提交。这将覆盖你的 package 文件。

$ ncu -u 正在升级 package.json [====================] 1/1 100% express 4.12.x → 4.13.x 运行 npm install 以安装新版本。 $ npm install # 更新已安装的包和 package-lock.json

检查全局包:

ncu -g

交互模式

在交互模式下选择要更新的包:

ncu --interactive ncu -i

ncu --interactive

结合 --format group 使用,体验更佳:

ncu --interactive --format group

筛选包

使用 --filter 选项或添加额外的命令行参数来筛选包:

# 仅升级 mocha ncu mocha ncu -f mocha ncu --filter mocha # 仅升级 chalk、mocha 和 react ncu chalk mocha react ncu chalk, mocha, react ncu -f "chalk mocha react"

使用通配符或正则表达式进行筛选:

# 升级以 "react-" 开头的包 ncu react-* ncu "/^react-.*$/"

使用 --reject 选项或在筛选器前加 ! 来排除特定包。支持字符串、通配符、全局模式、逗号或空格分隔的列表和正则表达式:

# 升级除 nodemon 之外的所有包 ncu \!nodemon ncu -x nodemon ncu --reject nodemon # 升级不以 "react-" 开头的包 ncu \!react-* ncu '/^(?!react-).*$/' # mac/linux ncu "/^(?!react-).*$/" # windows

高级筛选器:filterfilterResultsfilterVersion

如何确定依赖项更新

  • 直接依赖项会更新到最新的稳定版本:
    • 2.0.12.2.0
    • 1.21.3
    • 0.1.01.0.1
  • 范围操作符会保留,版本号会更新:
    • ^1.2.0^2.0.0
    • 1.x2.x
    • >0.2.0>0.3.0
  • "小于"会被替换为通配符:
    • <2.0.0^3.0.0
    • 1.0.0 < 2.0.0^3.0.0
  • "任意版本"会被保留:
    • **
  • 默认情况下会忽略预发布版本。
    • 使用 --pre 来包含预发布版本(如 alphabetabuild1235
  • 选择升级到的级别:
    • 使用 --target semver,根据指定的 semver 版本范围更新:
      • ^1.1.0^1.9.99
    • 使用 --target minor,严格更新补丁和次要版本(包括主版本号为零的版本):
      • 0.1.00.2.1
    • 使用 --target patch,严格更新补丁版本(包括主版本号为零的版本):
      • 0.1.00.1.2
    • 使用 --target @next,更新到发布在 next 标签上的版本:
      • 0.1.0 -> 0.1.1-next.1

选项

选项按以下优先级合并:

  1. 命令行选项
  2. 本地配置文件
  3. 项目配置文件
  4. 用户配置文件

不需要参数的选项可以通过在前面加上 --no- 来取消,例如 --no-peer

<!-- 开始选项 --> <!-- 请勿手动编辑此部分。它是在 build-options.ts 中自动生成的。运行 "npm run build" 或 "npm run build:options" 进行构建。 --> <table> <tr> <td>--cache</td> <td>将版本缓存到本地缓存文件。默认的 <code>--cacheFile</code> 是 ~/.ncu-cache.json,默认的 <code>--cacheExpiration</code> 是 10 分钟。</td> </tr> <tr> <td>--cacheClear</td> <td>清除默认缓存,或由 <code>--cacheFile</code> 指定的缓存文件。</td> </tr> <tr> <td>--cacheExpiration &lt;分钟&gt;</td> <td>缓存过期时间(分钟)。仅与 <code>--cache</code> 一起使用。(默认值:10)</td> </tr> <tr> <td>--cacheFile &lt;路径&gt;</td> <td>缓存文件的文件路径。仅与 <code>--cache</code> 一起使用。(默认值:"~/.ncu-cache.json")</td> </tr> <tr> <td>--color</td> <td>强制在终端中使用彩色输出。</td> </tr> <tr> <td>--concurrency &lt;n&gt;</td> <td>向注册表发送 HTTP 请求的最大并发数。(默认值:8)</td> </tr> <tr> <td>--configFileName &lt;s&gt;</td> <td>配置文件名。(默认值:.ncurc.{json,yml,js,cjs})</td> </tr> <tr> <td>--configFilePath &lt;路径&gt;</td> <td>.ncurc 配置文件的目录。(默认值:<code>packageFile</code> 所在目录)</td> </tr> <tr> <td>--cwd &lt;路径&gt;</td> <td>npm 将在其中执行的工作目录。</td> </tr> <tr> <td>--deep</td> <td>在当前工作目录中递归运行。等同于 (<code>--packageFile '**/package.json'</code>)。</td> </tr> <tr> <td>--dep &lt;值&gt;</td> <td>仅检查一个或多个依赖项部分:dev、optional、peer、prod 或 packageManager(用逗号分隔)。(默认值:["prod","dev","optional","packageManager"])</td> </tr> <tr> <td>--deprecated</td> <td>包含已弃用的包。使用 <code>--no-deprecated</code> 可排除已弃用的包(会使用更多带宽)。(默认值:true)</td> </tr> <tr> <td><a href="#doctor">-d, --doctor</a></td> <td>迭代安装升级并运行测试以识别破坏性升级。需要 <code>-u</code> 才能执行。</td> </tr> <tr> <td>--doctorInstall &lt;命令&gt;</td> <td>指定在 doctor 模式下使用的安装脚本。(默认值:<code>npm install</code> 或您的包管理器的等效命令)</td> </tr> <tr> <td>--doctorTest &lt;命令&gt;</td> <td>指定在 doctor 模式下使用的测试脚本。(默认值:<code>npm test</code>)</td> </tr> <tr> <td>--enginesNode</td> <td>仅包含满足包文件中指定的 engines.node 的包。</td> </tr> <tr> <td>-e, --errorLevel &lt;n&gt;</td> <td>设置错误级别。1:如果没有错误发生,以错误代码 0 退出。2:如果没有包需要更新,以错误代码 0 退出(对持续集成有用)。(默认值:1)</td> </tr> <tr> <td><a href="#filter">-f, --filter &lt;p&gt;</a></td> <td>仅包含匹配给定字符串、通配符、glob、逗号或空格分隔列表、/正则表达式/或谓词函数的包名。</td> </tr> <tr> <td><a href="#filterresults">filterResults &lt;fn&gt;</a></td> <td>根据用户提供的函数过滤升级。</td> </tr> <tr> <td><a href="#filterversion">--filterVersion &lt;p&gt;</a></td> <td>使用逗号或空格分隔列表、/正则表达式/或谓词函数过滤包版本。</td> </tr> <tr> <td><a href="#format">--format &lt;值&gt;</a></td> <td>修改输出格式或显示附加信息。指定一个或多个逗号分隔的值:group、ownerChanged、repo、time、lines。(默认值:[])</td> </tr> <tr> <td>-g, --global</td> <td>检查全局包而不是当前项目中的包。</td> </tr> <tr> <td><a href="#groupfunction">groupFunction &lt;fn&gt;</a></td> <td>使用 <code>--format group</code> 时,自定义包如何分组。</td> </tr> <tr> <td><a href="#install">--install &lt;值&gt;</a></td> <td>控制自动安装行为:always、never、prompt。(默认值:"prompt")</td> </tr> <tr> <td>-i, --interactive</td> <td>为每个依赖项启用交互式提示;除非设置了 json 选项之一,否则隐含 <code>-u</code>。</td> </tr> <tr> <td>-j, --jsonAll</td> <td>输出新的包文件,而不是人类可读的消息。</td> </tr> <tr> <td>--jsonDeps</td> <td>类似 <code>jsonAll</code>,但只列出新包数据的 <code>dependencies</code>、<code>devDependencies</code>、<code>optionalDependencies</code> 等。</td> </tr> <tr> <td>--jsonUpgraded</td> <td>以 json 格式输出已升级的依赖项。</td> </tr> <tr> <td>-l, --loglevel &lt;n&gt;</td> <td>日志记录量:silent、error、minimal、warn、info、verbose、silly。(默认值:"warn")</td> </tr> <tr> <td>--mergeConfig</td> <td>将嵌套配置与根配置文件合并,用于 <code>--deep</code> 或 <code>--packageFile</code> 选项。(默认值:false)</td> </tr> <tr> <td>-m, --minimal</td> </table> <td>根据语义化版本(semver),不要升级已经满足版本范围的较新版本。</td> </tr> <tr> <td>--packageData &lt;值&gt;</td> <td>包文件数据(您也可以使用标准输入)。</td> </tr> <tr> <td>--packageFile &lt;路径|通配符&gt;</td> <td>包文件位置。(默认:./package.json)</td> </tr> <tr> <td><a href="#packagemanager">-p, --packageManager &lt;s&gt;</a></td> <td>npm、yarn、pnpm、deno、bun、staticRegistry(默认:npm)。</td> </tr> <tr> <td><a href="#peer">--peer</a></td> <td>检查已安装包的对等依赖,并筛选出兼容版本的更新。</td> </tr> <tr> <td>--pre &lt;n&gt;</td> <td>包含预发布版本,例如 -alpha.0、-beta.5、-rc.2。当 <code>--target</code> 设为 newest 或 greatest 时,或当前版本是预发布版本时,自动设置为 1。(默认:0)</td> </tr> <tr> <td>--prefix &lt;路径&gt;</td> <td>npm 的当前工作目录。</td> </tr> <tr> <td>-r, --registry &lt;uri&gt;</td> <td>指定查找包版本时使用的注册表。</td> </tr> <tr> <td><a href="#registrytype">--registryType &lt;类型&gt;</a></td> <td>指定 --registry 是指完整的 npm 注册表还是简单的 JSON 文件或 URL:npm、json。(默认:npm)</td> </tr> <tr> <td><a href="#reject">-x, --reject &lt;p&gt;</a></td> <td>排除匹配给定字符串、通配符、glob、逗号或空格分隔列表、/正则表达式/或谓词函数的包。</td> </tr> <tr> <td><a href="#rejectversion">--rejectVersion &lt;p&gt;</a></td> <td>使用逗号或空格分隔列表、/正则表达式/或谓词函数排除 package.json 版本。</td> </tr> <tr> <td>--removeRange</td> <td>从最终包版本中删除版本范围。</td> </tr> <tr> <td>--retry &lt;n&gt;</td> <td>重试获取包信息失败请求的次数。(默认:3)</td> </tr> <tr> <td>--root</td> <td>除了指定的工作空间外,还对根项目运行更新。仅允许与 <code>--workspace</code> 或 <code>--workspaces</code> 一起使用。(默认:true)</td> </tr> <tr> <td>-s, --silent</td> <td>不输出任何内容。等同于 <code>--loglevel</code> silent。</td> </tr> <tr> <td>--stdin</td> <td>从标准输入读取 package.json。</td> </tr> <tr> <td><a href="#target">-t, --target &lt;值&gt;</a></td> <td>确定要升级到的版本:latest、newest、greatest、minor、patch、semver、<code>@[tag]</code> 或 [函数]。(默认:latest)</td> </tr> <tr> <td>--timeout &lt;毫秒&gt;</td> <td>全局超时时间(毫秒)。(默认:无全局超时,每个 npm-registry-fetch 30 秒)</td> </tr> <tr> <td>-u, --upgrade</td> <td>用升级后的版本覆写包文件,而不仅仅输出到控制台。</td> </tr> <tr> <td>--verbose</td> <td>记录额外信息以进行调试。等同于 <code>--loglevel</code> verbose。</td> </tr> <tr> <td>-w, --workspace &lt;s&gt;</td> <td>在一个或多个指定的工作空间上运行。添加 <code>--root</code> 也可以升级根项目。(默认:[])</td> </tr> <tr> <td>-ws, --workspaces</td> <td>在所有工作空间上运行。添加 <code>--root</code> 也可以升级根项目。</td> </tr> </table> <!-- END 选项 -->

高级选项

一些选项具有高级用法,或允许通过在 .ncurc.js 文件中指定函数来设置每个包的值。

运行 ncu --help [选项] 可查看特定选项的高级帮助,或参见以下内容:

<!-- BEGIN 高级选项 --> <!-- 请勿手动编辑此部分。它是在 build-options.ts 中自动生成的。运行 "npm run build" 或 "npm run build:options" 来构建。 -->

doctor

用法:

ncu --doctor -u
ncu --no-doctor
ncu -du

迭代安装升级并运行您项目的测试,以识别破坏性升级。回滚破坏性升级并用可用升级更新 package.json。

需要 -u 来执行(修改您的 package 文件、lock 文件和 node_modules)

更具体地说:

  1. 运行 npm installnpm test 以确保测试当前通过。
  2. 运行 ncu -u 乐观地升级所有依赖项。
  3. 如果测试通过,太好了!
  4. 如果测试失败,恢复 package 文件和 lock 文件。
  5. 对每个依赖项,安装升级并运行测试。
  6. 打印出带有测试错误的破坏性升级。
  7. 将可用升级保存到 package.json。

其他选项:

<table> <tr><td>--doctorInstall</td><td>指定自定义安装脚本(默认:`npm install` 或 `yarn`)</td></tr> <tr><td>--doctorTest</td><td>指定自定义测试脚本(默认:`npm test`)</td></tr> </table>

示例:

$ ncu --doctor -u
在升级前运行测试
npm install
npm run test
升级所有依赖项并重新运行测试
ncu -u
npm install
npm run test
测试失败
识别破坏性依赖项
npm install
npm install --no-save react@16.0.0
npm run test
  ✓ react 15.0.0 → 16.0.0
npm install --no-save react-redux@7.0.0
npm run test
  ✗ react-redux 6.0.0 → 7.0.0

/projects/myproject/test.js:13
  throw new Error('Test failed!')
  ^

npm install --no-save react-dnd@11.1.3
npm run test
  ✓ react-dnd 10.0.0 → 11.1.3
保存部分升级的 package.json

filter

用法:

ncu --filter [p]
ncu -f [p]

仅包含匹配给定字符串、通配符、glob、逗号或空格分隔列表、/正则表达式/或谓词函数的包名。只有包含的包会使用 --peer 进行检查。

--filter 在获取新版本之前运行,而 --filterResults 则在之后运行。

谓词函数仅在 .ncurc.js 中或将 npm-check-updates 作为模块导入时可用,不能在命令行中使用。

/** @param name 依赖项的名称。 @param semver 已升级版本的解析 Semver 数组。 (参见:https://git.coolaj86.com/coolaj86/semver-utils.js#semverutils-parse-semverstring) @returns 如果应包含该包则返回 true,如果应排除则返回 false。 */ filterFunction: (name, semver) => { if (name.startsWith('@myorg/')) { return false } return true }

filterResults

基于用户提供的函数过滤升级。

filterResults 在获取新版本之后运行,而 filterrejectfilterVersionrejectVersion 则在之前运行。这允许您基于版本变化(例如主版本变更)使用 filterResults 过滤升级。

仅在 .ncurc.js 中或将 npm-check-updates 作为模块导入时可用。

/** 过滤掉非主要版本更新。 @param {string} packageName 依赖项的名称。 @param {string} current 当前版本声明(可能是一个范围)。 @param {SemVer[]} currentSemver 语义版本格式的当前版本声明(可能是一个范围)。 @param {string} upgraded 升级后的版本。 @param {SemVer} upgradedSemver 语义版本格式的升级后版本。 @returns {boolean} 如果应保留升级则返回 true,否则将被忽略。 */ filterResults: (packageName, { current, currentSemver, upgraded, upgradedSemver }) => { const currentMajor = parseInt(currentSemver[0]?.major, 10) const upgradedMajor = parseInt(upgradedSemver?.major, 10) if (currentMajor && upgradedMajor) { return currentMajor < upgradedMajor } return true }

有关 SemVer 类型定义,请参见:https://git.coolaj86.com/coolaj86/semver-utils.js#semverutils-parse-semverstring

filterVersion

用法:

ncu --filterVersion [p]

仅包含匹配给定字符串、通配符、glob、逗号或空格分隔列表、/正则表达式/或谓词函数的版本。

谓词函数仅在 .ncurc.js 中或将 npm-check-updates 作为模块导入时可用,不能在命令行中使用。此函数是 filter 选项函数的别名。

/** @param name 依赖项的名称。 @param semver 已升级版本的解析 Semver 数组。 (参见:https://git.coolaj86.com/coolaj86/semver-utils.js#semverutils-parse-semverstring) @returns 如果应包含该包则返回 true,如果应排除则返回 false。 */ filterVersionFunction: (name, semver) => { if (name.startsWith('@myorg/') && parseInt(semver[0]?.major) > 5) { return false } return true }

format

用法:

ncu --format [值]

修改输出格式或显示附加信息。指定一个或多个逗号分隔的值。

<table> <tr><td>group</td><td>按主要、次要、补丁和主版本零更新对包进行分组。</td></tr> <tr><td>ownerChanged</td><td>显示包所有者是否已更改。</td></tr> <tr><td>repo</td><td>推断并显示包的源代码仓库链接。需要安装包。</td></tr> <tr><td>time</td><td>显示每个升级的发布时间。</td></tr> <tr><td>lines</td><td>在单独的行上打印 name@version。适用于通过管道传输到 npm install。</td></tr> </table>

groupFunction

使用 --format group 时自定义包如何分组。

仅在 .ncurc.js 中或将 npm-check-updates 作为模块导入时可用,不能在命令行中使用。

/** @param name 依赖项的名称。 @param defaultGroup 默认使用的预定义分组名称。 @param currentSpec package.json 中的当前版本范围。 @param upgradedSpec 将写入 package.json 的升级后版本范围。 @param upgradedVersion 注册表返回的升级后版本号。 @returns 预定义分组名称('major' | 'minor' | 'patch' | 'majorVersionZero' | 'none')或自定义字符串以创建自己的分组。 */ groupFunction: (name, defaultGroup, currentSpec, upgradedSpec, upgradedVersion) => { if (name === 'typescript' && defaultGroup === 'minor') { return 'major' } if (name.startsWith('@myorg/')) { return 'My Org' } return defaultGroup }

install

用法:

ncu --install [值]

默认: prompt

控制自动安装行为。

<table> <tr><td>always</td><td>升级后自动运行包管理器的安装命令。</td></tr> <tr><td>never</td><td>不安装且不提示。</td></tr> <tr><td>prompt</td><td>升级后显示消息建议安装,但不执行安装。在交互模式下,提示是否安装。(默认)</td></tr> </table>

packageManager

用法:

ncu --packageManager [s]
ncu -p [s]

指定查找版本时使用的包管理器。

<table> <tr><td>npm</td><td>系统安装的 npm。默认。</td></tr> <tr><td>yarn</td><td>系统安装的 yarn。如果存在 yarn.lock 文件则自动使用。</td></tr> <tr><td>pnpm</td><td>系统安装的 pnpm。如果存在 pnpm-lock.yaml 文件则自动使用。</td></tr> <tr><td>bun</td><td>系统安装的 bun。如果存在 bun.lockb 文件则自动使用。</td></tr> </table>

peer

用法:

ncu --peer
ncu --no-peer

检查已安装包的对等依赖,并将更新过滤为兼容版本。

示例:

以下示例演示了 --peer 的工作原理,以及它如何使用升级模块的对等依赖。

ncu-test-peer-update 包发布了两个版本:

  • 1.0.0 的对等依赖为 "ncu-test-return-version": "1.0.x"
  • 1.1.0 的对等依赖为 "ncu-test-return-version": "1.1.x"

我们的测试应用具有以下依赖项:

"ncu-test-peer-update": "1.0.0",
"ncu-test-return-version": "1.0.0"

这些包的最新版本是:

"ncu-test-peer-update": "1.1.0",
"ncu-test-return-version": "2.0.0"

使用 --peer:

ncu 将包升级到仍然遵守对等依赖约束的最高版本:

ncu-test-peer-update     1.0.0  →  1.1.0
ncu-test-return-version  1.0.0  →  1.1.0

不使用 --peer:

作为对比:不使用 --peer 选项时,ncu 将建议最新版本,忽略对等依赖:

ncu-test-peer-update     1.0.0  →  1.1.0
ncu-test-return-version  1.0.0  →  2.0.0

registryType

用法:

ncu --registryType [类型]

指定 --registry 是指完整的 npm 注册表还是简单的 JSON 文件。

<table> <tr><td>npm</td><td>默认 npm 注册表</td></tr> <tr><td>json</td><td>从文件或简单 JSON 注册表的 URL 检查版本。必须包含 `--registry` 选项。

示例:

// 本地文件
$ ncu --registryType json --registry ./registry.json

// URL
$ ncu --registryType json --registry https://api.mydomain/registry.json

// 当注册表以 .json 结尾时,可以省略 --registryType
$ ncu --registry ./registry.json
$ ncu --registry https://api.mydomain/registry.json

registry.json:

{
  "prettier": "2.7.1",
  "typescript": "4.7.4"
}
</td></tr> </table>

reject

用法:

ncu --reject [p]
ncu -x [p]

--filter 的反向操作。排除与给定字符串、通配符、glob、逗号或空格分隔列表、/正则表达式/或谓词函数匹配的包名。这也会将它们从 --peer 检查中排除。

--reject 在获取新版本之前运行,而 --filterResults 在之后运行。

谓词函数仅在 .ncurc.js 中或将 npm-check-updates 作为模块导入时可用,在命令行中不可用。

/** @param name 依赖项的名称。 @param semver 升级版本的解析 Semver 数组。 (参见: https://git.coolaj86.com/coolaj86/semver-utils.js#semverutils-parse-semverstring) @returns 如果包应被排除则返回 true,如果应包含则返回 false。 */ rejectFunction: (name, semver) => { if (name.startsWith('@myorg/')) { return true } return false }

rejectVersion

用法:

ncu --rejectVersion [p]

--filterVersion 的反向操作。排除与给定字符串、通配符、glob、逗号或空格分隔列表、/正则表达式/或谓词函数匹配的版本。

谓词函数仅在 .ncurc.js 中或将 npm-check-updates 作为模块导入时可用,在命令行中不可用。此函数是 reject 选项函数的别名。

/** @param name 依赖项的名称。 @param semver 升级版本的解析 Semver 数组。 (参见: https://git.coolaj86.com/coolaj86/semver-utils.js#semverutils-parse-semverstring) @returns 如果包应被排除则返回 true,如果应包含则返回 false。 */ rejectVersionFunction: (name, semver) => { if (name.startsWith('@myorg/') && parseInt(semver[0]?.major) > 5) { return true } return false }

target

用法:

ncu --target [值]
ncu -t [值]

确定要升级到的版本。(默认: "latest")

<table> <tr><td>greatest</td><td>升级到已发布的最高版本号,不考虑发布日期或标签。包括预发布版本。</td></tr> <tr><td>latest</td><td>升级到包的"latest"git标签所指向的版本。除非指定--pre,否则不包括预发布版本。</td></tr> <tr><td>minor</td><td>升级到最高的次要版本,但不升级主要版本。</td></tr> <tr><td>newest</td><td>升级到发布日期最近的版本,即使存在其他更高的版本号。包括预发布版本。</td></tr> <tr><td>patch</td><td>升级到最高的补丁版本,但不升级次要或主要版本。</td></tr> <tr><td>semver</td><td>升级到package.json中指定的语义化版本范围内的最高版本。</td></tr> <tr><td>@[tag]</td><td>升级到发布到特定标签的版本,例如'next'或'beta'。</td></tr> </table>

你还可以在.ncurc.js文件中指定自定义函数,或在将npm-check-updates作为模块导入时指定:

/** 将主版本为零的升级到下一个次要版本,其他版本升级到最新版本。 @param name 依赖项的名称。 @param semver 升级版本的解析后的Semver对象。 (参见:https://git.coolaj86.com/coolaj86/semver-utils.js#semverutils-parse-semverstring) @returns 上表中指定的有效目标值之一。 */ target: (name, semver) => { if (parseInt(semver[0]?.major) === '0') return 'minor' return 'latest' }

配置文件

使用.ncurc.{json,yml,js,cjs}文件来指定配置信息。 你可以使用--configFileName和--configFilePath命令行选项来指定文件名和路径。

例如,.ncurc.json:

{ "upgrade": true, "filter": "svelte", "reject": ["@types/estree", "ts-node"] }

如果你使用json或yaml编写.ncurc配置文件,你可以将JSON Schema添加到IDE设置中以获得自动完成功能。

例如,对于VS Code:

"json.schemas": [ { "fileMatch": [ ".ncurc", ".ncurc.json", ], "url": "https://raw.githubusercontent.com/raineorshine/npm-check-updates/main/src/types/RunOptions.json" } ], "yaml.schemas": { "https://raw.githubusercontent.com/raineorshine/npm-check-updates/main/src/types/RunOptions.json": [ ".ncurc.yml", ] },

模块/程序化使用

npm-check-updates可以作为模块导入:

import ncu from 'npm-check-updates' const upgraded = await ncu.run({ // 传递任何cli选项 packageFile: '../package.json', upgrade: true, // 默认值: // jsonUpgraded: true, // silent: true, }) console.log(upgraded) // { "mypackage": "^2.0.0", ... }

贡献

我们欢迎并感谢贡献。我会回应所有的PR,并可以就如何进行修改提供指导。有关贡献提示,请参阅CONTRIBUTING.md。

遇到问题?

提交一个issue。请先搜索现有的issues。

编辑推荐精选

蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多