npm-check-updates

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

  • 维护现有的语义版本控制策略,即“express”:“4.0.0”到“express”:“5.0.0”。
  • 仅修改package.json文件。运行npm install以更新已安装的软件包和package-lock.json。

Installatio

npm install -g npm-check-updates

Usage

在当前目录中显示任何新的项目依赖项:

$ ncu
Checking package.json
[====================] 5/5 100%
 
 express           4.12.x  →   4.13.x
 multer            ^0.1.8  →   ^1.0.1
 react-bootstrap  ^0.22.6  →  ^0.24.0
 react-a11y        ^0.1.1  →   ^0.2.6
 webpack          ~1.9.10  →  ~1.10.5
 
Run ncu -u to upgrade package.json

Options

--concurrency <n>            并发到注册中心的最大HTTP请求数。(默认值:8)

--configFilePath <path>      .ncurc配置文件的目录(默认:' packageFile '的目录)。

--configFileName <filename>  配置文件名(默认:.ncurc.{json,yml,js})

--cwd <path>                 npm将在其中执行的工作目录。

--dep <dep>                  只检查依赖项的一个或多个部分:prod、dev、peer、可选、bundle(逗号分隔)。

--deprecated                 包括弃用包。

--doctor                     迭代地安装升级并运行测试以识别破坏升级。运行“ncu --docker”的详细帮助。添加“-u”来执行。

--enginesNode                只包含满足引擎的包。在包文件中指定的节点。

-e, --errorLevel <n>         设置错误级别。1:如果没有发生错误,code为0。2:如果没有包需要更新code为0(对于持续集成很有用)。(默认值:1)

-f, --filter <matches>       只包含与给定字符串、逗号或空格分隔的列表或/regex/匹配的包名。

-g, --global                 检查全局包而不是当前项目中的包。

--greatest                   DEPRECATED. 重新命名为 "--target greatest".
-i, --interactive            为每个依赖项启用交互式提示;表示-u,除非设置了一个json选项

-j, --jsonAll                输出新的包文件,而不是人类可读的消息。

--jsonDeps                   像' jsonAll ',但只列出' dependencies ', ' devDependencies ', ' optionalDependencies '等新的包数据。

--jsonUpgraded               以json格式输出升级的依赖项。

-l, --loglevel <n>           日志等级: silent, error, minimal, warn,
                             info, verbose, silly. (default: "warn")
                             
-m, --minimal                不要升级根据semver的版本范围已经满足的新版本。

-n, --newest                 DEPRECATED. 重新命名为 "--target newest".
-p, --packageManager <name>  npm, yarn (default: "npm")
-o, --ownerChanged           检查包所有者在当前版本和升级版本之间是否发生了变化。

--packageData <string>       包文件数据(也可以使用stdin)。

--packageFile <path>         包文件位置(默认值:./ Package .json)。

--pre <n>                    包括 -alpha, -beta, -rc. (default: 0; default
                             with --newest and --greatest: 1).
                             
--prefix <path>              npm的当前工作目录。

-r, --registry <url>         第三方npm注册表。

--removeRange                从最终的包版本中删除版本范围。

--semverLevel <value>        DEPRECATED. 重新命名为 --target.
-s, --silent                 不输出任何内容 (--loglevel silent).
-t, --target <value>         目标升级版本: latest, newest,
                             greatest, minor, patch. (default: "latest")
                             
--timeout <ms>               全局超时(毫秒)。 (default: no global timeout and                              30 seconds per npm-registery-fetch).
                             
-u, --upgrade                用升级版本覆盖包文件,而不只是输出到控制台。
                             
-x, --reject <matches>       排除与给定字符串、逗号或空格分隔的列表或/regex/匹配的包。
                             
-V, --version                输出版本号

-h, --help                   显示帮助命令

Doctor Mode

用法: ncu --doctor [-u] [options]

迭代安装升级并运行测试以识别中断的升级。添加-u以执行(修改软件包文件,锁定文件和node_modules)。

更确切地说:

  1. 运行npm install并npm test确保测试当前通过。
  2. 运行ncu -u于乐观升级所有的依赖关系。
  3. 如果测试通过,请加油!
  4. 如果测试失败,则还原软件包文件和锁定文件。
  5. 对于每个依赖项,安装升级并运行测试。
  6. 找到重大升级后,保存部分升级的 package.json(不包括重大升级)并退出。

例:

$ ncu --doctor -u
npm install
npm run test
ncu -u
npm install
npm run test
Failing tests found:
/projects/myproject/test.js:13
  throw new Error('Test failed!')
  ^
Now let's identify the culprit, shall we?
Restoring package.json
Restoring package-lock.json
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
Saving partially upgraded package.json

Configuration Files

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

.ncurc.json:

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

Module/Programmatic Usage

npm-check-updates 作为 module 使用:

const ncu = require('npm-check-updates')
 
const upgraded = await ncu.run({
  // Pass any cli option.
  // Defaults:
  jsonUpgraded: true,
  silent: true
})
 
console.log(upgraded) // { "mypackage": "^2.0.0", ... }