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)。
更确切地说:
- 运行npm install并npm test确保测试当前通过。
- 运行ncu -u于乐观升级所有的依赖关系。
- 如果测试通过,请加油!
- 如果测试失败,则还原软件包文件和锁定文件。
- 对于每个依赖项,安装升级并运行测试。
- 找到重大升级后,保存部分升级的 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", ... }