惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
月光博客
月光博客
大猫的无限游戏
大猫的无限游戏
GbyAI
GbyAI
博客园 - 叶小钗
小众软件
小众软件
WordPress大学
WordPress大学
I
InfoQ
Last Week in AI
Last Week in AI
Vercel News
Vercel News
博客园 - Franky
Stack Overflow Blog
Stack Overflow Blog
P
Proofpoint News Feed
A
About on SuperTechFans
Engineering at Meta
Engineering at Meta
腾讯CDC
D
DataBreaches.Net
有赞技术团队
有赞技术团队
宝玉的分享
宝玉的分享
Jina AI
Jina AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
G
Google Developers Blog
V
Visual Studio Blog
酷 壳 – CoolShell
酷 壳 – CoolShell

kshao-blog-前端知识记录

win or mac clash 无 TUN 让 Antigravity、Chrome 强制 proxy(解决 Antigravity 无法加载选择 model、自动更新无法登录、跳转) 【大杂烩】在 pnpm 中直接修改 node_modules(.pnpm) 中的依赖项,项目中持久化 - pnpm 中的依赖处理、幽灵依赖、寻址规则等 在 html 中直接使用 Esm、Jsx 脚本快速调试和使用 React@19 和 Vue@3 源码,解决 React19 UMD 构建等问题 解决 Mac Docker Desktop 中启动出现的问题合集 通过阿里云、腾讯云无服务器搭建自定义的企业域名邮箱,实现在 QQ邮箱 收发等功能(附腾讯 SMTP 和 IMAP) 解决使用代理(clash 等)进行 SSH 连接(如 Github ssh key clone/push)出现 kex_exchange_identification 错误 静态文件资源 cdnjs, jsdelivr 抖音字节国内快速 CDN 镜像推荐【2025】- 仍在使用 bootcdn 和 staticfile CDN 请注意验证资源的完整性(SRI) pnpm monorepo 中管理依赖的最佳实践,与 Catalogs(目录)协议的使用(monorepo 中统一版本管理) Web 安全中的 Secure Contexts(安全上下文)- 解决在本地中使用 clipboard 或 Crypto 等 API 限制或关闭上下文限制 使用 serve 配合 openssl 或 mkcert 创建本地自签名可信任的证书 - 创建本地 TLS\SSL https 协议服务 利用 Github Actions 和 Acme 自动申请、更新和部署至阿里云、腾讯云 CDN Lets Encrypt SSl\TLS ECC RSA 双证书 【CSS】解决在 flex 容器中使用 align-content 或 justify-content 属性 center 居中时的溢出滚动和截断问题 - 理解 safe 关键字 在线工具 - 一键获取下载抖音无水印视频、抖音去水印解析工具、下载抖音无水印高清图集【2025 最新】 【React Router】v6 data router 在非组件(或工具方法)中如何优雅的跳转路由 【React】为什么路由跳转时页面滚动高度不会被重置(保留上个页面高度)?理解 history scrollRestoration 的场景与使用,以及如何使用 React Router 重置和跳转前保留滚动高度 【React】在本地 Html 中快速 debug(调试)React 源码 【React】结合源码和 EventLoop 分析 - 为什么 useLayoutEffect 会阻止 DOM 重绘(而 useEffect 闪烁)?为什么其内部 useState 会“同步”执行? React Compiler - 解放在函数中编程时的性能焦虑(React Conf 2024)附 Next 在线演示 在 github actions 中获取时间,并转换为中国标准时间(中国时区) 【npm】npm ci - npm clean install,在 CI、CD 中保持构建的一致性和可重复性 eslint 9.x 升级或使用指南,eslint.config.js 配置,包含 react、typescript、prettier 等常用配置升级迁移 使用 Spicetify 自定义 Spotify - 歌词翻译、全屏展示、主题替换 在 node 中快速代理请求(Proxy),解决跨域或请求转发问题 - http-proxy-middleware 修改请求体和返回 在 Hexo 中使用 AI(Gemini、deepseek、Azure)生成文章摘要,支持自定义模板。hexo-ai-summaries 插件文档(默认适配主题 Butterfly) 解决在 webstorm 或 idea 等 jetbrains 工具中遇到 Git 无法 force push,或 force push 灰色禁用无法点击(protected branches) hexo-seo-submit,Hexo 博客 SEO 优化插件 - 每日定时自动或手动提交链接至百度、Bing、Google,支持 Github Actions 和 Coding Jenkins 等CI(Hexo 插件编写) 一文吃透 pnpm 如何使用 workspace 构建 monorepo,与 npm、yarn 的用法对比(pnpm 9.x 内部安装依赖问题 link-workspace-packages) 【Node】Corepack - 解决 pnpm 或 yarn 的多版本管理、解决本地版本与 packageManager 中的版本一致性问题 解决 npm、cnpm 或 pnpm install 遇到 certificate has expired (证书已过期) npm、yarn、pnpm 设置最新国内镜像源(附官方镜像源和最新阿里源),以及 nrm 的使用教程【2025】
一键在本地批量检测并升级更新 package.json 中的模块依赖,n...
kshao · 2025-03-06 · via kshao-blog-前端知识记录

简介

npm-check-updates(ncu)是一个用于检查和更新工作区内 package.json 中依赖项版本的工具,除了当前项目范围内的依赖外,还可以检查和更新全局类型的依赖,如使用 npmpnpm,通过 --global 安装的依赖。

使用前需知

ncu 能做到的事情,你使用 npmpnpm 等基本都可以做到(如果记得住命令的话~),如只是简单的升级项目或 workspace 中的依赖版本,可使用提供的 updateupgrade 等命令

ncu 支持检查依赖和使用交互模式来更新,且在 workspace 中使用相对更简洁

semver - 语义化版本控制规范

X.Y.Z => Major.Minor.Patch => 主版本号.次版本号.修订号

常用的版本控制符号:

- ~ 只允许更新 修订版本
- ^ 允许更新次版本号和修订号
- * 匹配最新的任意版本(如测试版本)
- latest 安装该包的最新稳定版本(通常是发布的最新正式版)

https://semver.org

Npm

同样,使用 npm 提供的命令,也能很快将相关依赖更新。如配合 git 记录来说,与使用 ncu 体感上无明显区别

# 根据当前 package.json 中的 semver 规范升级版本
npm update
# 无视规范,使用最新版本
npm update --latest
# 更新全局范围的依赖,可通过 npm ls -g 查看当前拥有哪些全局依赖
npm update -g

pnpm

# 同 npm
pnpm update
# or
pnpm up
# or
pnpm upgrade

# 同 npm
pnpm up --latest

# 更新全局依赖
pnpm update -g

yarn

yarn upgrade
yarn upgrade --latest

yarn global upgrade

安装

全局安装时可直接使用 ncu 命令

npm install -g npm-check-updates

也可在命令行直接使用

npx npm-check-updates 

ncu registry

ncu 的相关命令使用到的源 registry 默认都是从 ~/.npmrc 中获取,你可以使用 ncu -r https://xxx 设置对应的源地址。

或者直接修改 npm 的 registry 配置,推荐使用 nrm 进行设置

npm config set registry https://xxx

检查当前项目 package.json 中的 devDependenciesdependencies 依赖的最新版本(无视当前的 semver 规范)

默认寻找当前执行目录中的 package.json 文件

$ ncu

ncu -i --format group - 交互模式

通过 -i 开启交互模式,通过 空格 选中需要升级的依赖,回车 升级。通过 --format group 可按 semver 规范分组显示,方便评估升级带来的影响。

$ ncu -i --format group

ncu --target <semver> - 遵循 semver 规范

默认 ncu 会忽略当前 package.json 中的 semver 规范,使用最新的版本,可设置 target 来更改依赖更新策略。

# 遵循当前 package.json 中的 semver 规范
ncu --target semver

# 安装最新的 次版本和修订版
ncu --target minor

# 只更新 修订版
ncu --target patch

更新 npm 安装的全局依赖

ncu 默认使用的 packageManagernpm,如需更新通过 npm 安装的全局依赖,则如下面命令

# 检查 npm 的全局依赖
ncu -g

更新其他 packageManager 安装的全局依赖

不同 包管理工具 安装的全局依赖的路径是不同的,如默认情况下 npm 安装的全局依赖路径是 /usr/local/lib/node_modulespnpm 安装的全局依赖路径是 ~/Library/pnpm/global,若都是默认安装的,则可以通过指定 -p 来指定对应的包管理工具。

pnpm default global path => https://pnpm.io/zh/next/npmrc#global-dir

packageManager(-p)支持的值:npm, yarn, pnpm, deno, bun, staticRegistry

# 查询当前全局依赖的安装目录
$ npm root
# or
$ pnpm root

# 更新通过 pnpm 安装的依赖
$ ncu -g -p pnpm

如是通过 nvm 或其他工具安装的 npmpnpm 等,可通过 --prefix 来指定对应的路径,可以通过 [p]npm config get prefix 来查看当前的执行程序的(bin)路径

$ pnpm config get prefix

$ ncu -g -p pnpm --prefix <上面获取的路径>

在 workspace 项目中使用

类似 pnpm --recursive,通过 -ws 可以让 ncurecursive 一样,可以在每个 reporoot 中执行命令

ncu -ws --root

进阶使用

配合 pnpm catlogs 使用

ncu 目前未支持 catlogs 协议(WIP 中),可以通过 --packageData 将修改后的 package.json 数据传给 ncu 再进行更新

脚本模块中使用

node 脚本中获取需要更新的依赖数据

import ncu from 'npm-check-updates'

const upgraded = await ncu.run({
  packageFile: '../package.json',
  upgrade: true,
})

console.log(upgraded) // { "mypackage": "^2.0.0", ... }