librawspeed
Version:
Node.js Native Addon for LibRaw - Process RAW image files with JavaScript
217 lines (166 loc) • 4.1 kB
Markdown
# LibRaw 升级指南
## 从当前版本升级到 X.X.X
### 自动升级(推荐)
运行升级脚本:
```bash
npm run upgrade:libraw
```
### 手动升级步骤
#### 1. 下载 LibRaw X.X.X
访问: https://www.libraw.org/download
下载此文件:
- `LibRaw-X.X.X.tar.gz` (所有平台的源代码)
#### 2. 备份当前安装
```bash
# 备份当前 deps 文件夹
cp -r deps deps-backup-$(date +%Y%m%d)
```
#### 3. 替换库文件
**所有平台:**
```bash
# 从源代码提取和编译
tar -xzf LibRaw-X.X.X.tar.gz
cd LibRaw-X.X.X
# 为项目配置
./configure --prefix=../deps/LibRaw-Source/LibRaw-X.X.X --enable-shared --disable-static
# 编译
make -j$(nproc)
# 安装
make install
# 构建原生插件
cd ..
npm run build
```
#### 4. 更新构建配置
检查 `binding.gyp` 中的版本特定更改:
```json
{
"target_name": "libraw_addon",
"sources": ["src/addon.cpp", "src/libraw_wrapper.cpp"],
"include_dirs": [
"<!(node -e \"console.log(require('node-addon-api').include)\")",
"deps/LibRaw-Source/LibRaw-X.X.X/libraw"
],
"conditions": [
["OS=='win'", {
"libraries": ["<(module_root_dir)/deps/LibRaw-Source/LibRaw-X.X.X/lib/libraw.lib"],
"copies": [{
"destination": "<(module_root_dir)/build/Release/",
"files": ["<(module_root_dir)/deps/LibRaw-Source/LibRaw-X.X.X/bin/libraw.dll"]
}]
}],
["OS=='mac'", {
"libraries": ["<(module_root_dir)/deps/LibRaw-Source/LibRaw-X.X.X/lib/libraw.dylib"]
}],
["OS=='linux'", {
"libraries": ["<(module_root_dir)/deps/LibRaw-Source/LibRaw-X.X.X/lib/libraw.so"]
}]
]
}
```
#### 5. 重新构建原生插件
```bash
npm run clean
npm run build
```
#### 6. 测试兼容性
```bash
# 运行综合测试
npm test
# 使用您的示例图像进行测试
npm run test:formats
# 性能回归检查
npm run test:performance
```
#### 7. 更新文档
```bash
# 更新支持的格式列表
npm run docs:generate
# 更新 package.json 中的版本信息
# 在 CHANGELOG.md 中更新新功能
```
### 潜在的破坏性更改
#### API 更改
检查 LibRaw 更新日志中的 API 修改:
- 可能有新的元数据字段
- 一些已弃用的函数可能被移除
- 添加了新相机支持
#### 性能更改
- 处理速度可能提高或改变
- 内存使用模式可能不同
- 有新的优化标志可用
#### 兼容性更改
- 支持新的相机型号
- 一些较旧的格式可能被弃用
- 颜色配置文件处理改进
### 版本特定说明
#### LibRaw X.X.X
查看官方 LibRaw 更新日志:
https://github.com/LibRaw/LibRaw/releases/tag/X.X.X
新版本的常见改进:
- 支持最新的相机型号
- 性能优化
- 元数据提取中的错误修复
- 增强的颜色配置文件处理
- 安全更新
### 故障排除
#### 构建错误
```bash
# 清除所有构建工件
npm run clean
rm -rf node_modules
npm install
npm run build
```
#### 运行时错误
```bash
# 检查库加载
node -e "console.log(require('./lib/index.js'))"
# 验证 DLL/SO 依赖项
# Windows: 使用 Dependency Walker
# Linux: ldd build/Release/libraw_wrapper.node
# macOS: otool -L build/Release/libraw_wrapper.node
```
#### 测试失败
```bash
# 测试单个格式
node test/test.js sample-images/test.nef
# 检查新的元数据字段
node -e "
const LibRaw = require('./lib');
const proc = new LibRaw();
proc.loadFile('sample.nef').then(() => {
return proc.getMetadata();
}).then(meta => {
console.log(JSON.stringify(meta, null, 2));
}).catch(console.error);
"
```
### 回滚程序
如果升级失败:
```bash
# 恢复备份
rm -rf deps
mv deps-backup-YYYYMMDD deps
# 使用旧版本重新构建
npm run clean
npm run build
npm test
```
### 升级后检查清单
- [ ] 所有测试通过
- [ ] 性能可接受
- [ ] 示例图像处理正确
- [ ] 新相机格式工作(如果有)
- [ ] 文档已更新
- [ ] CHANGELOG.md 反映更改
- [ ] 包版本适当提升
### 发布更新的包
```bash
# 更新版本
npm version patch # 或根据更改使用 minor/major
# 发布前测试
npm run prepublishOnly
# 发布到 npm
npm publish
```