* Update package.json file with new versions
(filePath, outdatedPackages)
| 120 | * Update package.json file with new versions |
| 121 | */ |
| 122 | function updatePackageJson(filePath, outdatedPackages) { |
| 123 | try { |
| 124 | const content = readFileSync(filePath, 'utf8') |
| 125 | const packageJson = JSON.parse(content) |
| 126 | |
| 127 | let updated = false |
| 128 | |
| 129 | for (const pkg of outdatedPackages) { |
| 130 | // Check and update in dependencies |
| 131 | if (packageJson.dependencies && packageJson.dependencies[pkg.name]) { |
| 132 | const currentRange = packageJson.dependencies[pkg.name] |
| 133 | const newRange = updateVersionRange(currentRange, pkg.latest) |
| 134 | packageJson.dependencies[pkg.name] = newRange |
| 135 | updated = true |
| 136 | } |
| 137 | |
| 138 | // Check and update in devDependencies |
| 139 | if ( |
| 140 | packageJson.devDependencies && |
| 141 | packageJson.devDependencies[pkg.name] |
| 142 | ) { |
| 143 | const currentRange = packageJson.devDependencies[pkg.name] |
| 144 | const newRange = updateVersionRange(currentRange, pkg.latest) |
| 145 | packageJson.devDependencies[pkg.name] = newRange |
| 146 | updated = true |
| 147 | } |
| 148 | |
| 149 | // Check and update in peerDependencies |
| 150 | if ( |
| 151 | packageJson.peerDependencies && |
| 152 | packageJson.peerDependencies[pkg.name] |
| 153 | ) { |
| 154 | const currentRange = packageJson.peerDependencies[pkg.name] |
| 155 | const newRange = updateVersionRange(currentRange, pkg.latest) |
| 156 | packageJson.peerDependencies[pkg.name] = newRange |
| 157 | updated = true |
| 158 | } |
| 159 | } |
| 160 | |
| 161 | if (updated) { |
| 162 | // Write back with proper formatting |
| 163 | writeFileSync(filePath, JSON.stringify(packageJson, null, 2) + '\n') |
| 164 | return true |
| 165 | } |
| 166 | |
| 167 | return false |
| 168 | } catch (error) { |
| 169 | console.error( |
| 170 | `${colors.red}Error updating ${filePath}: ${error.message}${colors.reset}`, |
| 171 | ) |
| 172 | return false |
| 173 | } |
| 174 | } |
| 175 | |
| 176 | /** |
| 177 | * Update version range while preserving the range type (^, ~, etc.) |
no test coverage detected