本文目录导读:

- Node.js (package.json)
- Python (requirements.txt)
- Java (Maven - pom.xml)
- Java (Gradle - build.gradle)
- 通用批量更新脚本
- 安全批量更新策略
- 自动化更新工具
- 最佳实践
Node.js (package.json)
使用 npm-check-updates
# 安装 npm install -g npm-check-updates # 检查所有依赖的更新 ncu # 更新所有依赖到最新版本 ncu -u # 更新到指定版本类型 ncu --target minor # 只更新小版本 ncu --target patch # 只更新补丁版本 # 更新后重新安装 npm install
使用 npm-upgrade
npx npm-upgrade
批量更新脚本
// update-deps.js
const { execSync } = require('child_process');
const fs = require('fs');
const packageJson = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };
Object.keys(deps).forEach(pkg => {
try {
execSync(`npm install ${pkg}@latest`, { stdio: 'inherit' });
console.log(`✅ Updated ${pkg}`);
} catch (error) {
console.error(`❌ Failed to update ${pkg}`);
}
});
Python (requirements.txt)
使用 pip-review
# 安装 pip install pip-review # 列出可更新的包 pip-review --local # 自动更新所有包 pip-review --auto # 交互式更新 pip-review --interactive
使用 pip-upgrader
# 安装 pip install pip-upgrader # 更新所有包 pip-upgrade # 更新指定包 pip-upgrade django requests
批量更新脚本
# update_python_deps.py
import subprocess
import re
def get_outdated_packages():
result = subprocess.run(['pip', 'list', '--outdated', '--format=columns'],
capture_output=True, text=True)
packages = []
for line in result.stdout.strip().split('\n')[2:]:
if line.strip():
pkg = line.split()[0]
packages.append(pkg)
return packages
def update_packages(packages):
for pkg in packages:
try:
subprocess.run(['pip', 'install', '--upgrade', pkg], check=True)
print(f"✅ Updated {pkg}")
except subprocess.CalledProcessError:
print(f"❌ Failed to update {pkg}")
if __name__ == "__main__":
outdated = get_outdated_packages()
if outdated:
print(f"Found {len(outdated)} outdated packages")
update_packages(outdated)
else:
print("All packages are up to date!")
Java (Maven - pom.xml)
使用 versions-maven-plugin
<!-- pom.xml 添加插件 -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.16.0</version>
</plugin>
# 检查更新 mvn versions:display-dependency-updates # 更新到最新版本 mvn versions:use-latest-releases # 更新到最新快照 mvn versions:use-latest-snapshots # 更新属性中定义的版本 mvn versions:update-properties
Java (Gradle - build.gradle)
# 检查依赖更新 gradle dependencyUpdates # 需要添加插件
在 build.gradle 中添加:
plugins {
id 'com.github.ben-manes.versions' version '0.50.0'
}
通用批量更新脚本
Bash 脚本
#!/bin/bash
# update_all_deps.sh
# Node.js
if [ -f "package.json" ]; then
echo "📦 Updating Node.js dependencies..."
npx npm-check-updates -u
npm install
fi
# Python
if [ -f "requirements.txt" ]; then
echo "🐍 Updating Python dependencies..."
pip install --upgrade pip
pip-review --auto
fi
# Ruby
if [ -f "Gemfile" ]; then
echo "💎 Updating Ruby dependencies..."
bundle update
fi
# PHP
if [ -f "composer.json" ]; then
echo "🐘 Updating PHP dependencies..."
composer update
fi
echo "✅ All dependencies updated!"
安全批量更新策略
#!/bin/bash
# safe_update.sh
# 备份原文件
backup_file() {
if [ -f "$1" ]; then
cp "$1" "$1.backup"
echo "📦 Backup created: $1.backup"
fi
}
# 回滚
rollback() {
if [ -f "$1.backup" ]; then
cp "$1.backup" "$1"
echo "↩️ Rolled back: $1"
fi
}
# 示例:更新 npm 包
update_deps_safe() {
backup_file "package.json"
backup_file "package-lock.json"
# 执行更新
npx npm-check-updates -u
# 运行测试
npm test
if [ $? -eq 0 ]; then
echo "✅ Tests passed, updates are safe"
else
echo "❌ Tests failed, rolling back..."
rollback "package.json"
rollback "package-lock.json"
fi
}
自动化更新工具
Dependabot (GitHub)
在 .github/dependabot.yml 中配置:
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
Renovate
{
"extends": ["config:base"],
"automerge": true,
"schedule": ["every weekend"]
}
最佳实践
- 分批更新:不要一次更新所有包
- 版本锁定:使用 lock 文件(package-lock.json, requirements.txt 等)
- 测试先行:更新后运行测试套件
- 版本控制:更新前创建 git 分支
- 监控变更:查看 changelog 了解破坏性变更
选择哪种方式取决于你的技术栈和项目需求。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播