npm批量更新package.json中的依赖, 升级 npm 全局依赖

本文介绍了如何使用npm-check插件进行依赖包的交互式和非交互式升级,以及npm-check-updates工具的高效更新方法。通过实例演示了如何检查本地、全局包更新,并提供了过滤和排除特定包的技巧。

方式1. npm-check

使用 npm-check 插件进行批量管理升级
npm-check 是用来检查npm依赖包是否有更新,错误以及不在使用的,可以使用npm-check进行包的更新。
详细信息:https://www.npmjs.com/package/npm-check

安装:
npm install -g npm-check

使用:
npm-check

设置(Options):

Usage
  $ npm-check <path> <options>

Path
  Where to check. Defaults to current directory. Use -g for checking global modules.
  (在哪里检查, 默认为当前目录, 使用-g检查全局模块)

Options
  -u, --update          Interactive update.
  						(交互式更新)
  -y, --update-all      Uninteractive update. Apply all updates without prompting.
  						(非交互式更新,应用所有更新而不提示)
  -g, --global          Look at global modules.
  						(查看全局模块)
  -s, --skip-unused     Skip check for unused packages.
  	    				(跳过检查未使用的包)
  -p, --production      Skip devDependencies.
  						(跳过devDependencies)
  -d, --dev-only        Look at devDependencies only (skip dependencies).
  						(只查看devDependencies(跳过依赖项))
  -i, --ignore          Ignore dependencies based on succeeding glob.
  						(忽略基于成功全局的依赖关系)
  -E, --save-exact      Save exact version (x.y.z) instead of caret (^x.y.z) in package.json.
  						(在package.json中保存精确版本(x.y.z)而不是插入符号(^x.y.z))
  --specials            List of depcheck specials to include in check for unused dependencies.
  						(要在未使用依赖项检查中包括的depcheck特殊项列表)
  --no-color            Force or disable color output.
  						(强制或禁用颜色输出)
  --no-emoji            Remove emoji support. No emoji in default in CI environments.
  						(删除emoji支持。CI环境中默认没有表情符号)
  --debug               Show debug output. Throw in a gist when creating issues on github.
						(显示调试输出。在github上创建问题的时候,不妨说说要点)
Examples
  $ npm-check           # See what can be updated, what isn't being used.
  						(看看哪些可以更新,哪些没有被使用)
  $ npm-check ../foo    # Check another path.
  						(检查另一个路径)
  $ npm-check -gu       # Update globally installed modules by picking which ones to upgrade.
  						(通过选择要升级的模块来更新全局安装的模块)
*一般使用

在项目依赖更新时,一般使用交互式更新 npm-check -u ,将终端切换到项目根目录,输入交互式更新命令,之后会进入更新目录选项,通过上下键可以移动光标,使用空格键可以选择需要处理的包,回车直接进行处理。

在这里插入图片描述

* 使用 npm-check 升级全局 npm 包

输入命令:npm -g outdated 查看全局依赖版本与新版本号(可省略)

输入命令:npm-check -u -g 遍历需要升级的全局依赖

通过 上下键 可以移动光标,使用 空格 键可以选择需要处理的包, 回车 直接进行处理。


方式2. npm-check-updates

npm-check-updates 将升级您的包。json对最新版本的依赖关系,忽略指定的版本

安装:
npm install -g npm-check-updates

在这里插入图片描述
使用:
显示当前目录中项目的任何新依赖项:

$ 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
 
运行 'ncu -u' 更新 package.json

升级项目的包文件:
确保包文件处于版本控制中,并且已提交所有更改,这将覆盖您的包文件

$ ncu -u
Upgrading package.json
[====================] 1/1 100%
 
 express           4.12.x  →   4.13.x
 
运行 'npm install' 来安装新版本.
 
$ npm install      #更新已安装的包和package-lock.json

检查全局包:

ncu -g           # 加上 -u 以获取用于升级的单行命令

您可以使用--filter--reject选项包含或排除特定的包
它们接受字符串、逗号或空格分隔的列表或正则表达式:

# 精准匹配 
$ ncu mocha             #  ncu -f mocha (or --filter) 的缩写,只包含与给定匹配的包名 字符串、逗号或空格分隔的列表,或 /正则表达式/。
$ ncu one, two, three
 
# 排除包 
$ ncu -x nodemon        # shorthand for ncu --reject nodemon 
 
# 使用正则表达式匹配以“gulp-”开头的包
$ ncu "/^gulp-.*$/"
 
# 匹配不以“gulp-”开头的包
$ ncu '/^(?!gulp-).*$/' # mac/linux 
$ ncu "/^(?!gulp-).*$/" # windows 

参考:
npm升级package.json依赖包 :https://blog.youkuaiyun.com/yusirxiaer/article/details/78026818
更新package.json中的dependencies依赖到最新版本:https://blog.youkuaiyun.com/zhangteng22/article/details/76438776
npm-check:https://www.npmjs.com/package/npm-check
npm-check-updates:https://www.npmjs.com/package/npm-check-updates

<think>嗯,用户遇到了npm install之后package.json没有更新的问题,我需要帮他们解决。首先,我得回想一下常见的导致这个问题的原因。可能的情况有很多,比如手动修改了package.json但没有正确安装,或者缓存问题,或者权限问题等等。 首先,用户可能在执行npm install时没有加上--save或--save-dev参数,导致安装的依赖没有被写入package.json。这时候需要提醒他们检查安装命令是否正确。比如,如果只是运行npm install lodash,而没有加上--save,那么依赖不会自动添加到package.json里。这时候应该建议用户使用正确的命令,比如npm install lodash --save或者npm install lodash -S,这样依赖才会被记录到dependencies里。 接下来,缓存问题也是一个常见的原因。有时候npm的缓存可能会导致安装的依赖没有正确更新。这时候可以建议用户清理缓存,使用npm cache clean --force命令,然后重新安装。同时,也可以考虑删除node_modules和package-lock.json,再重新执行npm install,这样能确保所有依赖都是全新安装的,避免旧缓存的影响。 权限问题也可能导致文件无法写入。尤其是在Linux或Mac系统下,如果用户没有足够的权限,可能导致package.json无法更新。这时候需要检查文件权限,或者尝试用sudo来执行命令,不过要注意使用sudo可能会有其他安全问题,所以最好还是调整文件权限。 另外,用户可能手动编辑了package.json,但格式有误,比如缺少逗号、引号不匹配等,这会导致npm无法正确解析文件,从而不会进行更新。这时候需要建议用户检查package.json的语法是否正确,可以使用JSON验证工具来排查错误。 还有可能是npm的版本过旧,存在一些已知的问题。建议用户升级npm到最新版本,使用npm install -g npm@latest来更新,然后再次尝试安装依赖。 如果以上方法都不奏效,可能需要使用npm update命令来更新现有的依赖,这可能会帮助更新package.json中的版本范围。不过需要注意,npm update默认只会更新符合语义化版本规则的依赖,可能不会修改主版本号。 还有一种情况是,用户可能在使用其他包管理器,比如yarn,导致npm的行为不一致。这时候需要确认项目是否混用了不同的包管理器,建议统一使用一种,并删除可能的冲突文件,比如yarn.lock,再重新安装。 最后,如果所有方法都试过了还是不行,可能需要检查文件系统是否只读,或者是否有防病毒软件、安全软件阻止了文件的修改。这些情况虽然少见,但也需要考虑到。 总结下来,解决步骤大致是:检查安装命令是否正确,清理缓存和node_modules,检查权限,验证package.json格式,更新npm版本,使用npm update,以及排除其他干扰因素。通过这些步骤,应该能解决大部分package.json更新的问题。</think>### npm install后package.json更新的解决方案 1. **检查安装命令是否正确** - 使用`npm install <package> --save`或`npm install <package> -S`将依赖写入`dependencies` - 使用`npm install <package> --save-dev`或`npm install <package> -D`写入`devDependencies` *示例:* ```bash npm install lodash --save # 正确命令 ``` 2. **清理缓存并重新安装** - 清除npm缓存: ```bash npm cache clean --force ``` - 删除`node_modules`和`package-lock.json`: ```bash rm -rf node_modules package-lock.json ``` - 重新安装依赖: ```bash npm install ``` 3. **检查文件权限** - Linux/Mac系统运行: ```bash sudo chown -R $(whoami) ./ # 递归修改文件所有者 ``` - Windows系统以管理员身份运行命令行工具。 4. **验证package.json格式** - 使用JSON验证工具(如[jsonlint](https://jsonlint.com/))检查语法错误。 - 确保依赖项名称和版本号格式正确,例如: ```json "dependencies": { "lodash": "^4.17.21" // 正确格式 } ``` 5. **更新npm版本** ```bash npm install -g npm@latest # 全局更新npm ``` 6. **使用npm update更新依赖** ```bash npm update <package> --save # 更新指定依赖 ``` 7. **排除其他工具干扰** - 若项目曾使用yarn,删除`yarn.lock`文件后重试。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值