本文目录导读:

- npm-check-updates (最常用)
- npm update 命令
- yarn upgrade 命令
- pnpm update 命令
- 批量更新脚本 (Node.js)
- 批量更新特定类型依赖
- 自动化脚本 (Linux/Mac)
- 使用 CI/CD 自动更新
- 安全更新建议
- 批量更新 Monorepo
- 最佳实践建议
npm-check-updates (最常用)
安装
npm install -g npm-check-updates
使用命令
# 检查可更新的依赖 ncu # 更新所有依赖到最新版本 ncu -u # 更新到最新的次要版本(不破坏性更新) ncu -u --target minor # 更新到最新的补丁版本 ncu -u --target patch # 更新指定依赖 ncu -u axios lodash
脚本示例 (package.json)
{
"scripts": {
"update-deps": "ncu -u && npm install",
"update-safe": "ncu -u --target minor && npm install"
}
}
npm update 命令
# 更新所有依赖到符合 semver 的最新版本 npm update # 更新指定包 npm update lodash axios # 更新生产依赖 npm update --production
yarn upgrade 命令
# 更新所有依赖 yarn upgrade # 更新到最新版本 yarn upgrade --latest # 更新指定包 yarn upgrade lodash
pnpm update 命令
# 更新所有依赖 pnpm update # 更新到最新版本 pnpm update --latest
批量更新脚本 (Node.js)
// update-deps.js
const { execSync } = require('child_process');
const fs = require('fs');
async function updateDependencies() {
const packageJson = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
const dependencies = { ...packageJson.dependencies, ...packageJson.devDependencies };
console.log('当前依赖版本:');
Object.entries(dependencies).forEach(([name, version]) => {
console.log(` ${name}: ${version}`);
});
// 使用 ncu 更新
console.log('\n正在更新依赖...');
execSync('ncu -u', { stdio: 'inherit' });
execSync('npm install', { stdio: 'inherit' });
console.log('依赖更新完成!');
}
updateDependencies();
批量更新特定类型依赖
# 只更新 devDependencies ncu -u --dev # 只更新 dependencies ncu -u --prod # 排除某些包 ncu -u --reject "react,react-dom" # 只更新特定的包 ncu -u --filter "react-*"
自动化脚本 (Linux/Mac)
#!/bin/bash # update-all-deps.sh echo "=== 开始更新依赖 ===" # 检查是否有 package.json if [ ! -f "package.json" ]; then echo "错误: 未找到 package.json" exit 1 fi # 备份原始文件 cp package.json package.json.backup # 更新依赖 ncu -u if [ $? -eq 0 ]; then echo "依赖版本更新成功" # 安装更新后的依赖 npm install echo "=== 更新完成 ===" else echo "更新失败,恢复原始文件" mv package.json.backup package.json exit 1 fi
使用 CI/CD 自动更新
GitHub Actions 示例
name: Update Dependencies
on:
schedule:
- cron: '0 0 * * 1' # 每周一运行
jobs:
update:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
- name: Update dependencies
run: |
npx npm-check-updates -u
npm install
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
with:
title: 'chore: update dependencies'
body: '自动更新依赖版本'
安全更新建议
# 只更新修复安全漏洞的版本 npm audit fix # 强制更新修复安全漏洞 npm audit fix --force # 使用 ncu 但只更新补丁版本 ncu -u --target patch
批量更新 Monorepo
# 对于 Lerna 项目 lerna exec -- ncu -u && lerna bootstrap # 对于 Yarn Workspaces yarn workspaces run ncu -u # 对于 pnpm Workspaces pnpm -r exec ncu -u
最佳实践建议
- 先备份: 更新前备份
package.json和package-lock.json - 逐步更新: 先更新次要版本,测试通过后再更新主版本
- 使用版本范围:
{ "dependencies": { "lodash": "^4.17.21", // 允许次要版本更新 "react": "~18.2.0" // 只允许补丁版本更新 } } - 创建分支测试: 在单独分支上更新并测试
- 使用版本锁定: 生产环境建议锁定版本
选择哪种方法取决于你的具体需求:
- 快速更新:使用
ncu -u - 安全更新:使用
npm audit fix - 精细控制:使用脚本批量处理
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播